iOS の実装

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