Android C2DM发送问题

时间:2011-03-13 03:55:11

标签: android android-c2dm

我无法使用C2DM服务测试推送通知。

我使用Lars'示例直到“3.4。注册您的应用程序”来设置我的Android测试项目。我成功从设备上获取了注册ID。

然后我使用以下curl成功通过我的服务器获取Auth令牌:

curl https://www.google.com/accounts/ClientLogin -d Email=theEmailYouWhitelisted -d Passwd=pass****word -d accountType=HOSTED_OR_GOOGLE -d source=Google-cURL-Example -d service=ac2dm

所以现在我要推出两个主要组件。因此,为了测试的目的,我发出另一个curl来发送消息(我将实现auth令牌生成,并且一旦我将其发送功能就在php中发送消息)。

我用:

curl --header "Authorization: GoogleLogin auth=**authFromRegistrationAbove**" "https://android.apis.google.com/c2dm/send" -d registration_id=**phoneRegistrationId(reciever)** -d "data.message=HelloPush" -d collapse_key=something -k

响应:

  

错误= NotRegistered

这就是我的所在,也很困惑。我使用我的白名单电子邮件/ pw成功获得了我的Auth Token,并通过我的客户端服务器接收到了C2DM程序。然后编译Lars的项目以生成我的设备注册ID,但是一旦它们一起使用,我得到上面未注册的错误,并且没有推送通知。

想法?评论如果您需要更多信息,我会更新帖子。感谢。

2 个答案:

答案 0 :(得分:4)

如果您关注我的示例,您应该在RegisterActivity的文本字段中维护您注册的C2DM用户(电子邮件地址)。这必须与CURL中的相同。还要确保正确复制身份验证字符串。

答案 1 :(得分:2)

您是否已经查看此previous question了吗? android-c2dm邮件列表中也经常讨论此问题。这是NotRegistered的{​​{3}}。

一个常见问题是,您在应用程序上使用的用户ID与用于生成身份验证令牌的用户ID不同。请注意,在C2DM注册表单中,您提供了两个电子邮件地址:一个是在您被接受时通知您,另一个是“角色帐户”。后者也称为发件人ID,是电话应用程序和用于生成身份验证令牌的帐户必须使用的内容。