为什么我自己的发件人ID会收回InvalidRegistration消息?

时间:2015-06-09 18:56:33

标签: android google-cloud-messaging

我一直致力于在应用程序中实现GCM,并且基于Google的示例已经能够使其运行。但是,当我尝试使用自己的发件人ID和范围时,我在尝试发送通知时收到InvalidRegistration错误。例如,这有效:

token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

如果没有,我已经从项目中仔细检查了发件人ID,事实上,我的开发者控制台中只有一个项目,所以我无法使用不正确的项目:

token = instanceID.getToken(getString(R.string.my_sender_id), SubscriptionHelper.INSTANCE_SCOPE, null);

我在这里错过了一个关键组件吗?为什么它与默认的发件人ID一起使用,而不是我从开发者控制台获得的发件人ID?

1 个答案:

答案 0 :(得分:2)

根据GCM Android Client guide,您的InstanceID令牌调用应该类似于

InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(
    getString(R.string.gcm_defaultSenderId),
    GoogleCloudMessaging.INSTANCE_ID_SCOPE, 
    null);

请注意,必须使用GoogleCloudMessaging.INSTANCE_ID_SCOPE作为第二个参数 - InstanceID比GCM更通用,因此它是一个可以接受任何String的参数,但GCM特别要求授权范围。