iOS 实现

以下示例将帮助您在 iOS 客户端中实现实例 ID。请注意,这些示例使用 GCM 范围,您将使用该范围管理 Firebase Cloud Messaging 的 iOS 客户端令牌。

设置您的 CocoaPods 依赖项

实例 ID 使用 CocoaPods 安装和管理依赖项。打开终端窗口,然后导航至应用的 Xcode 项目所在的位置。如果您还没有为应用创建 Podfile,请立即创建一个:

pod init

打开为应用创建的 Podfile,然后添加以下内容:

pod 'FirebaseInstanceId'

保存文件并运行:

pod install

此操作会为您的应用创建一个 .xcworkspace 文件。在以后开发您的应用时都要使用此文件。

生成令牌

生成令牌需要用到 Google Developers Console 生成的项目 ID。

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) {
                      // ...
}];

管理令牌和实例 ID

您可以使用实例 ID 删除和刷新令牌。

删除令牌和实例 ID

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];

您还可以删除实例 ID 本身,在这种情况下,您下次调用 getInstance() 时,将获得一个新的实例 ID:

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

刷新令牌

实例 ID 服务可能会创建或重新生成令牌。当出现这种情况时,系统会发送通知。您可以通过添加一个名为 kFIRInstanceIDTokenRefreshNotification 的通知观察者来监听此通知。

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

必须在创建令牌之前创建此观察者,例如在调用 [FIRApp configure] 之前。您可以通过调用 [[FIRInstanceID instanceID] token] 来检索最新令牌。

请注意,如需观察 Cloud Messaging 的令牌生成情况,可使用特定的委托