インスタンス ID は、アプリのインスタンスごとに一意の ID を提供します。インスタンス ID は、Android アプリと iOS アプリ、Chrome アプリ/拡張機能に実装できます。
主な機能
インスタンス 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 が必要です。