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();

生成令牌

生成令牌需要 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>