我开发的Android C2DM推送应用程序在应用程序端代码中引用了我的发件人(例如:“sender@gmail.com”)。 情况1: 当我在Android设备上安装此应用时,该设备在帐户和同步设置中的gmail ID为“personalid@gmail.com”。 应用程序已成功注册到C2DM,但它没有收到任何推送消息。
情况2: 当我在Android设备的帐户和同步中使用相同的发件人ID(“sender@gmail.com”)时。我收到了所有推送的消息。
为什么案例1失败而案例2(发件人ID全部通过)成功?
答案 0 :(得分:0)
请确保您已从手机的内置gtalk应用程序退出,如果您未从gtalk应用程序注销,那么它将在gtalk和您的个人应用之间产生歧义,以便从谷歌服务器推送消息,以便它无法向任何应用发送消息并提供异常。
有关推送通知的详细信息,请查看https://developers.google.com/android/c2dm/
最好的c2dm教程,http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html
答案 1 :(得分:0)
这是C2DM的工作方式。它以这种方式工作是有道理的,因为它需要registration id
和authentication token
的电子邮件地址。
发送推送消息时,您的第三方服务器使用基于(可能)“sender@gmail.com”构建的注册ID,以及在同一电子邮件上构建的身份验证令牌。 Google的服务器会在您的设备上查找并尝试查找该特定的电子邮件地址帐户。您可以在设备上拥有多个帐户,但其中至少有一个帐户必须是用于注册设备的帐户。
如果不重要,谷歌为什么要求收到电子邮件呢?直接使用设备的唯一ID会更容易。