次の例は、iOS クライアントに Instance ID を実装する際に役立ちます。これらの例では GCM スコープを使用していますが、これは Firebase Cloud Messaging の iOS クライアントのトークンを管理するために使用します。
CocoaPods の依存関係を設定する
Instance ID は CocoaPods を使用して依存関係をインストールして管理します。ターミナル ウィンドウを開き、アプリケーションの Xcode プロジェクトの場所に移動してください。アプリの Podfile をまだ作成していない場合は、ここで作成します。
pod init
アプリ用に作成した Podfile を開き、次の内容を追加します。
pod 'FirebaseInstanceId'
ファイルを保存し、次のコマンドを実行します。
pod install
これにより、アプリケーション用の .xcworkspace
ファイルが作成されます。このファイルは、アプリケーションで今後行うあらゆる開発で利用できます。
トークンを生成する
トークンを生成するには、Google デベロッパー コンソールで生成されたプロジェクト 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 のトークンの生成を監視するには、特定のデリゲートを使用できます。