我一直致力于在应用程序中实现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?
答案 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特别要求授权范围。