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