次の例は、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 のトークンの生成を監視する場合は、 特定の デリゲートを使用できます。