Triển khai trên iOS

Các ví dụ sau đây sẽ giúp bạn triển khai Mã phiên bản trong ứng dụng iOS. Xin lưu ý rằng các ví dụ này sử dụng phạm vi GCM mà bạn sẽ sử dụng để quản lý mã thông báo cho ứng dụng iOS cho Giải pháp gửi thông báo qua đám mây của Firebase.

Thiết lập phần phụ thuộc CocoaPods

Mã nhận dạng thực thể sử dụng CocoaPods để cài đặt và quản lý các phần phụ thuộc. Mở cửa sổ dòng lệnh rồi chuyển đến vị trí của dự án Xcode cho ứng dụng của bạn. Nếu bạn chưa tạo Podfile cho ứng dụng của mình, hãy tạo ngay:

pod init

Mở Podfile đã tạo cho ứng dụng của bạn và thêm nội dung sau:

pod 'FirebaseInstanceId'

Lưu tệp và chạy:

pod install

Thao tác này sẽ tạo một tệp .xcworkspace cho ứng dụng của bạn. Hãy sử dụng tệp này cho mọi hoạt động phát triển sau này trên ứng dụng của bạn.

Tạo mã thông báo

Để tạo mã thông báo, bạn phải có Mã dự án do Google Developers Console tạo.

NSString *authorizedEntity = PROJECT_ID;
String *scope = kFIRInstanceIDScopeFirebaseMessaging;
NSDictionary *options = @{
  @"apns_token" : <APNS Token data>,
  // 1 if APNS sandbox token else 0
  @"apns_sandbox" : @(1),
};
[[FIRInstanceID instanceID] tokenWithAuthorizedEntity:authorizedEntity
                                                scope:scope
                                              options:options
                                              handler:
                  ^(NSString * _Nullable token, NSError * _Nullable error) {
                      // ...
}];

Quản lý mã thông báo và mã phiên bản

Mã phiên bản cho phép bạn xoá và làm mới mã thông báo.

Xoá mã thông báo và mã phiên bản

NSString *authorizedEntity = PROJECT_ID; // Project ID
String *scope = kFIRInstanceIDScopeFirebaseMessaging;
FIRInstanceIDDeleteTokenHandler handler = ^void(NSError *error) {
  if (error) {
    // Failed to delete the token. Check error and do an exponential
    // backoff to retry again.
  } else {
    // Successfully deleted the token.
  }
};
[[FIRInstanceID instanceID]
    deleteTokenWithAuthorizedEntity:authorizedEntity
                              scope:scope
                            handler:handler];

Bạn cũng có thể xoá chính mã nhận dạng thực thể. Trong trường hợp đó, vào lần tiếp theo khi gọi getInstance(), bạn sẽ nhận được mã nhận dạng thực thể mới:

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
      if error != nil {
        NSLog(@"Error deleting instance ID: %@", error);
      }
    }];

Làm mới mã thông báo

Dịch vụ mã nhận dạng phiên bản có thể tạo hoặc tạo lại mã thông báo. Khi điều này xảy ra, hệ thống sẽ gửi một thông báo. Bạn có thể theo dõi thông báo này bằng cách thêm trình quan sát cho các thông báo có tên kFIRInstanceIDTokenRefreshNotification.

[[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(tokenRefreshNotification:) 
         name:kFIRInstanceIDTokenRefreshNotification object:nil];

Bạn phải tạo trình quan sát này trước khi tạo mã thông báo, ví dụ: trước khi gọi [FIRApp configure]. Bạn có thể truy xuất mã thông báo mới nhất bằng cách gọi [[FIRInstanceID instanceID] token].

Lưu ý rằng để quan sát việc tạo mã thông báo cho giải pháp Gửi thông báo qua đám mây, sẽ có một chế độ uỷ quyền cụ thể.