次の例は、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]
を呼び出すことで取得できます。