インスタンス ID とは

インスタンス ID によって、アプリのインスタンスごとに一意の ID が提供されます。インスタンス ID は、Android アプリ、iOS アプリ、Chrome アプリ/拡張機能に実装できます。

主な機能

インスタンス ID は、認証に一意の ID を提供するだけでなく、他のサービスで使用するセキュリティ トークンも生成できます。その他の機能は以下のとおりです。

セキュリティ トークンの生成

インスタンス ID は、アプリのサーバーサイドのマネージド リソースへのアクセスをサードパーティに許可する承認トークンを生成する簡単な API を提供します。これらのトークンを使用して、Google Cloud Messaging 経由でアプリのプッシュ メッセージを承認します。

アプリの信頼性を確認する

インスタンス ID トークンをサーバーに渡し、インスタンス ID サービスを使用してアプリのパッケージ名を検証し、有効な署名があるかどうかを確認します。インスタンス ID クラウド サービスを使用してトークンを確認すると、既知のアプリを識別できます。コストと冗長なラウンド トリップ通信を削減するには、これらのトークンを保存するようにサーバーを構成し、チェックを 1 回のみ行うようにします。セキュリティ上の懸念がある場合、アプリは「deleteTokens」(インスタンス ID 自体)を作成して、新しいインスタンスを生成できます。さらに、インスタンス ID サーバーは、バグやセキュリティの問題を検出すると、トークンまたはインスタンス ID の更新を開始します。

アプリデバイスがアクティブであることを確認する

インスタンス ID サーバーは、アプリがインストールされているデバイスが最後にいつ使用されたかを示します。これにより、アプリのデータを保持するか、ユーザーに再アプローチするために push メッセージを送信するかを決定します。

アプリを特定してトラッキングする

インスタンス ID は、世界中のすべてのアプリ インスタンスで一意であるため、データベースはこの ID を使用して、アプリ インスタンスを一意に識別、追跡できます。サーバー側のコードは、インスタンス ID のクラウド サービスを介して、インスタンス ID が正当であり、サーバーに登録した元のアプリと同じ ID であることを確認できます。プライバシー保護のため、アプリはインスタンス ID を削除して、データベースの履歴と関連付けないようにできます。次回アプリがインスタンス ID を呼び出すときに、前のインスタンスとの関連がないまったく新しいインスタンス ID が取得されます。

インスタンス ID のライフサイクル

  1. インスタンス ID サービスは、アプリがオンラインになったときに InstanceID を発行します。InstanceID は、ローカル デバイスに保存されている秘密鍵とインスタンス ID サービスに登録されている公開鍵の公開鍵/秘密鍵のペアによってサポートされています。
  2. アプリでは、必要に応じて getID() メソッドを使用して、最新の InstanceID をリクエストできます。アプリをサポートするアプリがある場合は、そのファイルをサーバーに格納できます。
  3. アプリは、必要に応じて getToken() メソッドを使用してインスタンス ID サービスにトークンをリクエストできます。また、InstanceID と同様に、アプリ独自のサーバーにトークンを格納することもできます。アプリに対して発行されるすべてのトークンは、そのアプリの InstanceID に属します。
  4. トークンは一意で安全ですが、セキュリティの問題が発生した場合や、デバイスの復元中にユーザーがアプリをアンインストールして再インストールした場合に、アプリまたはインスタンス ID サービスでトークンの更新が必要になることがあります。アプリは、インスタンス ID サービスからのトークン更新リクエストに応答するリスナーを実装する必要があります。

インスタンス ID のライフサイクル

クライアントの実装

インスタンス ID は Android と iOS の両方で実行されます。どちらを使用する場合でも、クライアント アプリに適切なライブラリを含める必要があります。Android には Google Play 開発者サービスが必要です。トークンを生成する場合は、Google Developers Console で生成されたプロジェクト ID が必要です。

詳しい手順については、Android / iOS 実装ガイドをご覧ください。