主な機能
インスタンス ID は、認証に一意の ID を指定するだけでなく、他のサービスで使用するセキュリティ トークンを生成することもできます。その他の機能は次のとおりです。
セキュリティ トークンを生成する
- インスタンス ID は、第三者がアプリのサーバー側マネージド リソースにアクセスすることを承認するセキュリティ トークンを生成するためのシンプルな API です。
アプリの真正性を検証する
- インスタンス ID トークンをサーバーに渡し、インスタンス ID サービスを使用してアプリのパッケージ名を検証し、有効な署名があるかどうかを確認します。インスタンス ID クラウド サービスを使用してトークンを検証すると、既知のアプリを識別できます。コストと冗長なラウンド トリップ通信を削減するには、これらのトークンを保存し、チェックが 1 回だけ必要になるようにサーバーを構成します。セキュリティ上の問題がある場合は、アプリでトークンまたはインスタンス ID 自体を削除して、新しいトークンを生成できます。また、インスタンス ID サーバーは、バグやセキュリティの問題を検出すると、トークンまたはインスタンス ID の更新を開始します。
アプリデバイスがアクティブであることを確認する
- インスタンス ID サーバーでは、アプリがインストールされているデバイスが最後に使用された日時を確認できます。これを使用して、アプリからのデータを保持するか、ユーザーに再アプローチするためにプッシュ メッセージを送信するかを決定します。
アプリを特定して追跡する
- インスタンス ID は世界中のすべてのアプリ インスタンス間で一意であるため、データベースはインスタンス 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 が必要です。