在一个设备上收到INVALID_SENDER错误,而在另一个GCM Android设备上却能正常工作

12

我正在遵循使用Google云消息传递(GCM)实现Android推送通知的指南,在我的应用程序中实现GCM。当我尝试在另一个设备 (Galaxy Tab 7') 上测试时,它会生成错误,但在单个设备 (Galaxy S) 上可以正常工作。

handleRegistration: registrationId = null, error = INVALID_SENDER, unregistered = null

这是我收到的日志信息:

V/GCMRegistrar(5649): Registering app  my_maypackage of senders APA91bHvzZbO_nyYvaA_QRGDaV-wRAYKjt0qJSQmzPUi2unqG7j0OGuyhVY1A3zh-ZfnA0XT0ffgyKypVJ_5owLZvZBNGARpTBkBg9ED8gVVCDejaIpShghq_tXGhMnFQEufwdCL1ibm
V/GCMRegistrar(5649): Setting registeredOnServer status as true until 2013-04-02 11:02:07.847

V/GCMBroadcastReceiver(5649): onReceive: com.google.android.c2dm.intent.REGISTRATION
V/GCMBroadcastReceiver(5649): GCM IntentService class: my_maypackage.GCMIntentService
V/GCMBaseIntentService(5649): Acquiring wakelock
V/GCMBaseIntentService(5649): Intent service name: GCMIntentService-980172650021-7

D/GCMBaseIntentService(5649): handleRegistration: registrationId = null, error = INVALID_SENDER, unregistered = null
D/GCMBaseIntentService(5649): Registration error: INVALID_SENDER
I/GCMIntentService(5649): Received error: INVALID_SENDER
V/GCMBaseIntentService(5649): Releasing wakelock

注意:这两个设备都使用相同的Gmail帐户进行配置。

6个回答

21

该死........我一直在使用基于文本的“项目ID”来访问URL,这可能是新API控制台中URL的书写方式。唉!!! 现在已经全部修复了,谢谢 :) - GONeale
那么你把项目ID作为数字放在哪里呢?我的是基于文本的,像是vigilant-brace-234。还是我应该使用这个? - Mando
好的,我找到了获取数字项目ID的方法 - 只需转到经典(原始)控制台,它仍然在那里! - Mando
1
项目 ID 也可以在新控制台的主仪表板部分找到。 - Giovanni Toraldo
尽管我有正确的发送者ID,但我仍然收到INVALID_SENDER错误,你知道还有其他原因吗? - Jorge Arimany

14

对我来说,起作用的是从控制台的API部分启用"Google Cloud Messaging for Android": 输入图像描述


6

[在@spanjeta的答案中补充:]

问题在于,由于谷歌不断修改开发者控制台,要获得项目编号并不容易。虽然谷歌很好心地为开发者提供了宣布项目友好/文本 ID 的可能性,但他们没有更新 GCM 文档,指出这不能替换 GCM 客户端中的项目 ID。 当你这样做(给项目命名文本名称/ID)时-你不能使用它,因为你会收到 INVALID_SENDER 错误。 你必须以某种方式获得纯数字项目 ID。

那么如何获取项目编号? 你需要以某种方式进入旧的开发者控制台。 以下方法有效(目前): 转到 开发者控制台 → 您的项目 → API → Android 的 Google Cloud Messaging → 配额 然后,将打开一个新的、旧的谷歌开发者控制台标签,其中包含以下 URL: https://code.google.com/apis/console/b/0/?noredirect#project:YOUR_PROJECT_NUMBER:quotas

然后,在应用程序中使用 YOUR_PROJECT_NUMBER 作为 GCM SENDER_ID。


2
在项目仪表板的顶部显示了项目ID和项目编号。
Project ID: aaaa-bbb-000000 Project Number: 00000111112

您需要使用数字项目编号作为SENDER_ID。

2
我想与您分享,我刚遇到了同样的问题。之前GCM推送一直正常工作,没有任何更改,突然间我们的用户反馈无法收到推送通知。
于是我查看了所有关于此问题的StackOverflow帖子,仍然无法弄清楚(应用程序ID/密钥都正确输入,代码也完全正确,甚至在Google演示中尝试了等等)。
所以在绝望的情况下,我去了开发控制台并禁用了GCM,然后重新启用它...一切都正常工作了!

1
也许您需要更改GOOGLE_PROJ_ID。

第一步

enter image description here

第二 enter image description here

祝你好运!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接