为什么我自己的发件人 ID 会收到 InvalidRegistration 消息?
Why is my own sender ID getting back an InvalidRegistration message?
我一直致力于在一个应用程序中实现 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?
根据 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 更通用,因此它是一个可以接受任何字符串的参数,但 GCM 特别要求授权范围。
我一直致力于在一个应用程序中实现 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?
根据 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 更通用,因此它是一个可以接受任何字符串的参数,但 GCM 特别要求授权范围。