以下示例可帮助您在 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();
刷新令牌
Instance 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>