我无法使用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,但是一旦它们一起使用,我得到上面未注册的错误,并且没有推送通知。
想法?评论如果您需要更多信息,我会更新帖子。感谢。
答案 0 :(得分:4)
如果您关注我的示例,您应该在RegisterActivity的文本字段中维护您注册的C2DM用户(电子邮件地址)。这必须与CURL中的相同。还要确保正确复制身份验证字符串。
答案 1 :(得分:2)
您是否已经查看此previous question了吗? android-c2dm
邮件列表中也经常讨论此问题。这是NotRegistered
的{{3}}。
一个常见问题是,您在应用程序上使用的用户ID与用于生成身份验证令牌的用户ID不同。请注意,在C2DM注册表单中,您提供了两个电子邮件地址:一个是在您被接受时通知您,另一个是“角色帐户”。后者也称为发件人ID,是电话应用程序和用于生成身份验证令牌的帐户必须使用的内容。