サーバーの実装は省略可能です。次のオペレーションを実行する場合は、Instance ID サービスを使用します。
- アプリ インスタンスに関する情報を取得する。アプリトークンを検証するか、トークンを作成したアプリ インスタンスに関する詳細情報を取得します。
- アプリ インスタンスの関係マップを作成する。アプリ インスタンスとエンティティ間の関係を作成します。
- APNs トークンの登録トークンを作成します。この API を使用すると、既存の APNs トークンを一括インポートして、FCM の有効な登録トークンにマッピングできます。
アプリ インスタンスに関する情報を取得する
アプリ インスタンスに関する情報を取得するには、次のエンドポイントで Instance ID サービスを呼び出し、次のようにアプリ インスタンスのトークンを指定します。
 https://iid.googleapis.com/iid/info/IID_TOKEN
パラメータ
- Authorization: Bearer <access_token>。このパラメータはヘッダーで設定します。有効期間の短い OAuth2 トークンを- Authorizationヘッダーの値として追加します。このトークンの取得方法については、認証情報を手動で指定するをご覧ください。
- access_token_auth: true。このパラメータはヘッダーで設定します。
- [省略可] ブール値 details: このクエリ パラメータをtrueに設定すると、このトークンに関連付けられている FCM トピック サブスクリプション情報(存在する場合)を取得できます。指定しない場合、デフォルトでfalseになります。
結果
呼び出しが成功すると、HTTP ステータス 200 と次の内容を含む JSON オブジェクトが返されます。
- application- トークンに関連付けられたパッケージ名。
- authorizedEntity- トークンへの送信が承認されている projectId。
- applicationVersion- アプリケーションのバージョン。
- platform- トークンが属するデバイス プラットフォームを示す- ANDROID、- IOS、- CHROMEのいずれかを返します。
details フラグが設定されている場合:
- rel- トークンに関連付けられた関係。たとえば、トピック サブスクリプションのリストなどです。
GET リクエストの例
https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA
Content-Type:application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
access_token_auth: true
結果の例
HTTP 200 OK
{
  "application":"com.iid.example",
  "authorizedEntity":"123456782354",
  "platform":"Android",
  "rel":{
    "topics":{
      "topicname1":{"addDate":"2015-07-30"},
      "topicname2":{"addDate":"2015-07-30"},
      "topicname3":{"addDate":"2015-07-30"},
      "topicname4":{"addDate":"2015-07-30"}
    }
  }
}
アプリ インスタンスの関係マッピングを作成する
Instance ID API を使用すると、アプリ インスタンスの関係マップを作成できます。たとえば、登録トークンを FCM トピックにマッピングして、アプリ インスタンスをトピックに登録できます。API には、このような関係を個別に作成する方法と一括で作成する方法の両方が用意されています。
アプリ インスタンスのリレーション マッピングを作成する
登録トークンとサポートされている関係を指定すると、マッピングを作成できます。たとえば、次に示すように、このエンドポイントで Instance ID サービスを呼び出し、アプリ インスタンスのトークンを指定することで、アプリ インスタンスを FCM トピックに登録できます。
 https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME
パラメータ
- Authorization: Bearer <access_token>。このパラメータはヘッダーで設定します。有効期間の短い OAuth2 トークンを- Authorizationヘッダーの値として追加します。このトークンの取得方法については、認証情報を手動で指定するをご覧ください。
- access_token_auth: true。このパラメータはヘッダーで設定します。
結果
成功すると、HTTP ステータス 200 が返されます。
POST リクエストの例
https://iid.googleapis.com/iid/v1/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA/rel/topics/movies
Content-Type:application/json
Content-Length: 0
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
access_token_auth: true
結果の例
HTTP 200 OK
{}
複数のアプリ インスタンスの関係マッピングを管理する
Instance ID サービスのバッチメソッドを使用すると、アプリ インスタンスのバッチ管理を実行できます。たとえば、FCM トピックへのアプリ インスタンスの一括追加や一括削除を実行できます。API 呼び出しごとに最大 1,000 個のアプリ インスタンスを更新するには、このエンドポイントで Instance ID サービスを呼び出し、JSON 本文でアプリ インスタンス トークンを指定します。
 https://iid.googleapis.com/iid/v1:batchAdd
 https://iid.googleapis.com/iid/v1:batchRemove
パラメータ
- Authorization: Bearer <access_token>。このパラメータはヘッダーで設定します。有効期間の短い OAuth2 トークンを- Authorizationヘッダーの値として追加します。このトークンの取得方法については、認証情報を手動で指定するをご覧ください。
- access_token_auth: true。このパラメータはヘッダーで設定します。
- to: トピック名。
- registration_tokens: 追加または削除するアプリ インスタンスの IID トークンの配列。
結果
成功すると、HTTP ステータス 200 が返されます。結果が空の場合、トークンの登録が成功したことを示します。定期購入が失敗した場合、結果には次のいずれかのエラーコードが含まれます。
- NOT_FOUND - 登録トークンが削除されたか、アプリがアンインストールされています。
- INVALID_ARGUMENT - 提供された登録トークンは送信者 ID に対して有効ではありません。
- INTERNAL - 不明な理由でバックエンド サーバーが失敗しました。リクエストを再試行します。
- TOO_MANY_TOPICS - アプリ インスタンスあたりのトピック数が多すぎます。
- RESOURCE_EXHAUSTED - 短時間に登録または登録解除のリクエストが多すぎます。指数バックオフを使用して再試行する。
POST リクエストの例
https://iid.googleapis.com/iid/v1:batchAdd
Content-Type:application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
access_token_auth: true
{
   "to": "/topics/movies",
   "registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O...", "1uoasi24:9jsjwuw...", "798aywu:cba420..."],
}
結果の例
HTTP 200 OK
{
  "results":[
    {},
    {"error":"NOT_FOUND"},
    {},
  ]
}
APNs トークンの登録トークンを作成する
インスタンス ID サービスの batchImport メソッドを使用すると、既存の iOS APNs トークンを Firebase Cloud Messaging に一括インポートして、有効な登録トークンにマッピングできます。このエンドポイントで Instance ID サービスを呼び出し、JSON 本文で APNs トークンのリストを指定します。
 https://iid.googleapis.com/iid/v1:batchImport
レスポンスの本文には、対応する APNs デバイス トークンに FCM メッセージを送信するために使用できるインスタンス ID 登録トークンの配列が含まれています。
パラメータ
- Authorization: Bearer <access_token>。このパラメータはヘッダーで設定します。有効期間の短い OAuth2 トークンを- Authorizationヘッダーの値として追加します。このトークンの取得方法については、認証情報を手動で指定するをご覧ください。
- access_token_auth: true。このパラメータはヘッダーで設定します。
- application: アプリのバンドル ID。
- sandbox: サンドボックス環境(TRUE)または本番環境(FALSE)を示すブール値
- apns_tokens: 追加または削除するアプリ インスタンスの APNs トークンの配列。リクエストあたりの最大トークン数は 100 個です。
結果
呼び出しが成功すると、HTTP ステータス 200 と JSON 結果本文が返されます。リクエストで指定された各 APNs トークンについて、結果リストには次のものが含まれます。
- APNs トークン。
- ステータス。OK、または失敗を説明するエラー メッセージ。
- 成功した結果の場合、FCM が APNs トークンにマッピングする登録トークン。
POST リクエストの例
https://iid.googleapis.com/iid/v1:batchImport
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
access_token_auth:true
{
  "application": "com.google.FCMTestApp",
  "sandbox":false,
  "apns_tokens":[
      "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
      "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86"
   ]
}
結果の例
HTTP 200 OK
{
 "results":[
       {
        "apns_token": "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
         "status": "OK",
         "registration_token":"nKctODamlM4:CKrh_PC8kIb7O...clJONHoA"
       },
       {
         "apns_token": "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86",
         "status":"Internal Server Error"
        },
     ]
  }
エラー レスポンス
Instance ID サーバー API の呼び出しは、次の HTTP エラーコードを返します。
- HTTP status 400 (Bad request)- リクエスト パラメータがないか、無効です。詳細については、エラー メッセージをご確認ください。
- HTTP status 401 (Unauthorized)- 認証ヘッダーが無効です。
- HTTP status 403 (Forbidden)- 認証ヘッダーが- authorizedEntityと一致しません。
- HTTP status 404 (Not found)- 無効な HTTP パスまたは IID トークンが見つかりません。詳細については、エラー メッセージをご確認ください。
- HTTP status 503 (Service unavailable)- サービスを利用できません。指数バックオフを使用してリクエストを再試行します。