以下示例可帮助您在 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 令牌的生成,您可以使用特定的代理。