下列範例可協助您在 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>