Android の実装

次の例は、Android デバイスにインスタンス ID を実装する際に役立ちます。 できます。これらの例では、GCM スコープを使用しています。このスコープは、 これはデモ用です。 Google Cloud Messaging は、 使用されません。

Google Play 開発者サービスをセットアップする

クライアント アプリを作成するには、Google Play 開発者サービス SDK を使用します。 Google Play のアプリのセットアップ サービス SDK。Play 開発者サービス ライブラリには、インスタンス ID ライブラリが含まれています。

インスタンス ID を取得する

次のコード行はインスタンス ID を返します。

String iid = InstanceID.getInstance(context).getId();

トークンを生成する

トークンを生成するには、プロジェクト ID によって生成される Google Developers Console:

String authorizedEntity = PROJECT_ID; // Project id from Google Developer Console
String scope = "GCM"; // e.g. communicating using GCM, but you can use any
                      // URL-safe characters up to a maximum of 1000, or
                      // you can also leave it blank.
String token = InstanceID.getInstance(context).getToken(authorizedEntity,scope);

トークンとインスタンス ID を管理する

インスタンス ID を使用すると、トークンの削除と更新を行うことができます。

トークンとインスタンス ID を削除する

String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);

インスタンス ID 自体(関連するすべての ID を含む)を削除することもできます。 定義できます。次回 getInstance() を呼び出すと、新しい インスタンス ID:

InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();

更新トークン

インスタンス ID サービスは、定期的に トークンの更新をリクエストします。また、 次の場合にコールバックを開始します。

  • セキュリティの問題がある。たとえば SSL やプラットフォームの問題です
  • デバイス情報が失効している。バックアップや復元などです
  • それ以外の場合、インスタンス ID サービスが影響を受けます。

インスタンス ID リスナー サービスをアプリに実装して、これらの ID を受信します。 あります。

public class MyInstanceIDService extends InstanceIDListenerService {
  public void onTokenRefresh() {
    refreshAllTokens();
  }

  private void refreshAllTokens() {
    // assuming you have defined TokenList as
    // some generalized store for your tokens
    ArrayList<TokenList> tokenList = TokensList.get();
    InstanceID iid = InstanceID.getInstance(this);
    for(tokenItem : tokenList) {
      tokenItem.token =
        iid.getToken(tokenItem.authorizedEntity,tokenItem.scope,tokenItem.options);
      // send this tokenItem.token to your server
    }
  }
};

プロジェクトのマニフェスト ファイルでこのサービスを構成する必要もあります。

<service android:name=".MyInstanceIDService" android:exported="false">
  <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
  </intent-filter>
</service>