我在我的应用程序中使用 GCM 并使用InstanceId
API 生成 GCM 令牌。我正面临InstanceId
API 返回的令牌无效的问题。
我使用 Postman 来检查令牌,并且不时地在某些设备中尝试使用令牌会引发 NotRegistered 错误。虽然,如果我随后强制执行该GCMInstanceIdListener
服务,它会GCMRegistrationService
再次调用,这一次我得到了正确的令牌。
有没有办法检查我收到的令牌是否在GCMRegistrationService
工作中?我知道我们可以调用https://android.googleapis.com/gcm/send
并验证令牌,但它需要在标头中传递服务器密钥,我不想将它存储在客户端上。
这就是我的代码的样子:
public class GCMInstanceIdListener extends InstanceIDListenerService {
@Override
public void onTokenRefresh() {
Intent intent = new Intent(this, GCMRegistrationService.class);
startService(intent);
}
}
public class GCMRegistrationService extends IntentService {
private static final String TAG = "GCMRegistrationService";
public GCMRegistrationService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(BuildConfig.GCM_SENDER_ID,
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.d(TAG, "GCM Token : " + token);
}
}