iOS の実装

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