Cài đặt FireBase
I)Tạo tài khoản
Đầu tiên các bạn phải đăng ký một tài khoản.Một ứng dụng Firebase mới sẽ được tạo cho bạn với một URL là duy nhất trong firebaseio.com. Bạn sẽ sử dụng chính URL vừa đăng ký để lưu trữ và đồng bộ dữ liệu.
Ở trong bảng điều khiển ứng dụng vừa tạo bạn có thể tạo, quản lý, và thêm những ứng dụng Firebase. Ấn vào một ứng dụng Firebase cho phép bạn xem và chỉnh sửa dữ liệu của ứng dụng bạn trong realtime. Trong bảng điều khiển bạn có thể thiết lập chế độ bảo mật và một số các quy tắc cho Firebase, quản lý việc xác thực của app bạn....
II) Cài đặt bằng CocoaPods
CocoaPods là cách dễ nhất để bắt đầu với Firebase IOS SDK. Nếu bạn không biết về CocoaPods, thì có thể vào link này getting started documentation
Để khởi tạo CocoaPods trong project bạn chạy các lệnh dữa đây:
$ cd đường-dẫn-đến-project-của-bạn
$ pod init
$ open –a Xcode Podfile
Sau khi bạn khởi tạo xong CocoaPods, bạn chỉ cần thêm Firebase Pod đến Podfile vừa tạo với đoạn mã sau:
Pod ‘Firebase’. ‘>=2.5.1’
Sau đó bạn quay trở lại màn hình terminal chạy các đoạn mã sau:
$ pod install
$ open your-project.xcworkspace
Vậy là xong quá trình cài đặt Firebase pod .
III)Sử dụng
Để sử dụng firebase bạn cần import vào tất cả các lớp cần sử dụng:
ObjC:
#import <Fireabase/Firebase.h>
Swift:
import Firebase
Nếu bạn sử dụng Firebase phiên bản cũ bạn có thể tạo một file bridging header và import giống bên ObjC.
Định dạng dữ liệu Firebase là gì?
Tất cả cở sở dữ liệu Firebase được lưu trữ là những đối tượng JSON. Không có bản ghi hay bảng nào cả. Khi chúng ta thêm dữ liệu đến cấu trúc JSON, nó trở thành một khoá trong cấu trúc JSON cũ. Ví dụ, nếu tôi thêm một trường mới có tên “categories” ở dưới users/techmaster, thì dữ liệu của chúng ta như sau:
{
"users": {
"techmaster ": {
"address": "Nguyen Dinh Chieu",
//Tất cả các key và value của file JSON ở “categories” được thêm.
"categories": { "one": true, "three": true }
},
"brinchen": { ... },
"hmadi": { ... }
}
}
Trong Objective-C và Swift cấu trúc file JSON được chuyển thành các kiểu như:
NSString
NSNumber
NSDictionary
NSArray
Với kiểu BOOL nó có thể đại diện bời NSNumber numberWithBool:(BOOL)
I)Tạo tham chiếu tới Firebase
Để đọc và ghi dữ liệu, chúng ta đâu tiên tạo một tham chiếu đến cơ sở dữ liệu Firebase.
Objective-C
Firebase *myRootRef = [[Firebase alloc] initWithUrl:@"https://docs-examples.firebaseio.com/"];
Swift
var myRootRef = Firebase(url:"https://docs-examples.firebaseio.com/")
-Đây là tạo một tham chiếu chứ không phải tạo một kết nối đến server hoặc là bắt đầu download dữ liệu. Dữ liệu không được tìm kiếm cho đến khi quá trình đọc hoặc ghi được gọi.
-Bạn có thể tuy vấn trực tiếp vào nhánh con dữ liệu. Ví dụ, để chỉ đến địa chỉ của techmaster đơn giản bạn chỉ cần thêm “users/techmaster/address” vào sau URL:
Objective-C
Firebase *myRootRef = [[Firebase alloc] initWithUrl:@"https://docs-examples.firebaseio.com/web/data/ users/techmaster/address "];
Swift
var myRootRef = Firebase(url:"https://docs-examples.firebaseio.com/web/ data/ users/techmaster/address ")
Bạn có thể nhận lại kết quả giống như trên bằng cách sử dụng childByAppendingPath nó là một API của Firebase:
Objective-C
Firebase *myRootRef = [[Firebase alloc] initWithUrl:@"https://docs-examples.firebaseio.com/web/data"];
[myRootRef childByAppendingPath: @" users/techmaster/address "];
Swift
var myRootRef = Firebase(url:"https://docs-examples.firebaseio.com/web/data")
myRootRef.childByAppendingPath("users/techmaster/address ")
II)Mảng trong một cơ sở dữ liệu Firebase
Cơ sở dữ liệu Firebase không hỗ trợ mảng. Nếu chúng ta cố gắng lưu trữ một mảng, nó thực tế sẽ lưu là một object với các số nguyên là tên của khoá.
[“hello”, “world”]
//Khi firebase lưu trữ thì nó thành
{0: “hello”, 1: “world”}
Tuy nhiên để giúp lập trình viên lưu trữ mảng trong cơ sở dữ liệu Firebase, khi dữ liệu được đọc sử dụng “value” từ REST api, nếu dữ liệu giống kiểu mảng, Firebase sẽ cho đầu ra là một mảng. Điều đặc biệt nếu tất cả keys và kiểu sô nguyen, và hơn một nửa của keys từ 0 đến key lớn nhất trong một đối tượng có kiểu khác rỗng, thì Firebase sẽ cho đầu ra là một mảng.
// chúng ta gửi dữ liệu
['a', 'b', 'c', 'd', 'e']
// Cở sở dữ liệu Firebase lưu nó là
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}
// ở đây các key là kiểu số và liên tục,
//Nếu chúng ta truy vấn dữ liệu, chúng ta sẽ lây dược
['a', 'b', 'c', 'd', 'e']
// Tuy nhiên nếu chúng ta sau đó xoá a, b, và d
// Thì dữ liệu đó không còn tuần tự nữa
// Chúng ta không lấy được giá trị là một mảng nữa
{2: 'c', 4: 'e'}
Tại sao không cung cấp đầy đủ việc hỗ trợ kiểu mảng? Với real-time việc chỉnh sửa sẽ đem đến rất nhiều vấn đề vì chỉ số của mảng không phải là tồn tại vĩnh viễn.
Ví dụ: Nếu 3 người dùng cùng cập nhật một mảng trên server. Nếu người dùng A cố gắng để thay đổi giá trị tại key 2, người dùng B cố gắng xoá key 2, và người dùng C cố gắng thay đổi nó vậy điều này sẽ trả lại dữ liệu không đúng. Ví dụ:
//bắt đầu với dữ liệu
['a', 'b', 'c', 'd', 'e']
// A) di chuyển key 2 key 5
// b) xoá key 2
// c) cập nhật key 2 thành foo
// Đầu tiên tôi nghĩ kết quả sẽ là
['a', 'b', 'd', 'e']
// Nhưng mà thực tế thì
['a', 'c', 'foo', 'b']
Lưu ý khi lưu trữ mảng:
-Tại một thời điểm chỉ có một client có thể ghi vào mảng.
-Để xoá các key, chúng ta lưu toàn bộ mảng thay vì sử dụng removeValue.
-Chúng ta phải cẩn thận hơn khi cập nhật chỉ số mảng.
Nguồn bài viết:https://www.firebase.com
Demo ứng dụng chơi cờ online sử dụng Firebase:
Tham khảo:
Hiện nay tại TechMaster đang có 3 khóa học về lập trình iOS, một khóa dạy bằng ngôn ngữ Objective-C, một khóa bằng ngôn ngữ Swift và một khoá Swift - Kết nối REST Web Service. Hình thức học tập rất linh hoạt cho bạn lựa chọn và sẽ có mức học phí khác nhau tùy theo bạn chọn học online, offline hoặc FlipLearning (kết hợp giữa online và offline). Ngoài ra bạn cũng có thể tham gia thực tập toàn thời gian tại TechMaster để rút ngắn thời gian học và nhanh chóng đi kiếm việc làm.
Bình luận