次の例は、iOS クライアントにインスタンス ID を実装する際に役立ちます。 これらの例では、Firebase Cloud Messaging の iOS クライアントのトークンを管理するために使用する GCM スコープを使用しています。
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 のトークンの生成を監視する場合は、特定の デリゲートを使用できます。