Android 实现

以下示例将帮助您在 Android 客户端。请注意,这些示例使用了 GCM 范围,该范围只有用 以供演示使用 Google 云消息传递 已停用。

设置 Google Play 服务

要编写客户端应用,请使用 Google Play 服务 SDK, 如设置 Google Play 服务 SDK。Play 服务库包含实例 ID 库。

获取实例 ID

以下代码行会返回实例 ID:

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

生成令牌

生成令牌需要 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 本身,包括 词元。下次您致电 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>