インスタンス 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 のライフサイクル
- インスタンス ID サービスは、アプリがオンラインになったときに
InstanceID
を発行します。InstanceID
は、ローカル デバイスに保存されている秘密鍵とインスタンス ID サービスに登録されている公開鍵の公開鍵/秘密鍵のペアによってサポートされています。 - アプリでは、必要に応じて
getID()
メソッドを使用して、最新のInstanceID
をリクエストできます。アプリをサポートするアプリがある場合は、そのファイルをサーバーに格納できます。 - アプリは、必要に応じて
getToken()
メソッドを使用してインスタンス ID サービスにトークンをリクエストできます。また、InstanceID
と同様に、アプリ独自のサーバーにトークンを格納することもできます。アプリに対して発行されるすべてのトークンは、そのアプリのInstanceID
に属します。 - トークンは一意で安全ですが、セキュリティの問題が発生した場合や、デバイスの復元中にユーザーがアプリをアンインストールして再インストールした場合に、アプリまたはインスタンス ID サービスでトークンの更新が必要になることがあります。アプリは、インスタンス ID サービスからのトークン更新リクエストに応答するリスナーを実装する必要があります。
クライアントの実装
インスタンス ID は Android と iOS の両方で実行されます。どちらを使用する場合でも、クライアント アプリに適切なライブラリを含める必要があります。Android には Google Play 開発者サービスが必要です。トークンを生成する場合は、Google Developers Console で生成されたプロジェクト ID が必要です。