iOS の実装

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