インスタンス ID とは

インスタンス 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 のライフサイクル

  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 が必要です。

詳細な手順については、AndroidiOS の実装ガイドをご覧ください。