Android 實作

以下範例可協助您在 Android 用戶端中實作執行個體 ID。請注意,這些範例使用 GCM 範圍,但 Google 雲端通訊已停用,因此這僅供示範之用。

設定 Google Play 服務

如要編寫用戶端應用程式,請使用 Google Play 服務 SDK,如「設定 Google Play 服務 SDK」一文所述。Play 服務程式庫包含執行個體 ID 程式庫。

取得執行個體 ID

以下這行程式碼會傳回執行個體 ID:

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

產生權杖

產生權杖時,您必須提供 Google Developers Console 產生的專案 ID。

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 本身,包括所有相關聯的權杖。下次呼叫 getInstance() 時,您會取得新的執行個體 ID:

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

重新整理權杖

執行個體 ID 服務會定期啟動回呼 (例如每 6 個月),要求您的應用程式更新權杖。但也可能在下列情況下啟動回呼:

  • 存在安全性問題,例如 SSL 或平台問題。
  • 裝置資訊已失效,例如備份和還原。
  • 執行個體 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>