我在我的应用程序中使用Google Cloud Messaging进行推送通知,我对此有两个基本疑问

时间:2015-09-07 20:47:32

标签: android google-cloud-messaging

  1. GCM是Android中推送通知的唯一方法吗?它是否比其他方法(如果有的话)更合适?

  2. 因此,假设我的设备中的应用程序在GCM上注册。应用程序本身是否与注册自身的设备或用户及其注册的电子邮件ID相关联?如果我的用户将来切换设备,相同的“注册令牌”会为他工作吗?或者在类似的情况下,如果具有其他g-mail id的用户从同一设备注册到我的应用程序,我是否将通知推送到具有2个不同注册令牌的同一设备?

  3. 扩展到我在2中提出的问题,假设一个用户的g-mail ID在我的应用程序上运行在不同的设备上。 GCM是否将通知推送到所有这些设备,或只推送其中一个?如果是,那么它如何优先排序?

3 个答案:

答案 0 :(得分:2)

  1. 不,Android中还有其他推送通知服务,例如Parse。但是,强烈建议使用具有Google Play商店的任何Android设备中的默认推送通知服务,因为这会降低电池使用量。如果您正在将应用推送到其他地方,例如亚马逊商店,请记住,Kindle Fire不符合此要求,并且没有Google Play服务 - 至少就我而言知道。

  2. 注册令牌非常易变,并且完全不受电子邮件约束。实际上,有时同一设备可能会突然获得新的GCM ID。关于GCM的最佳实践有许多教程,但Google's是最好的开始方式。 >为防止出现问题所做的工作是将设备的GCM ID存储在数据库中,这样您就可以随时知道当前与您的设备相关联的ID。 GCM可以无缘无故地为您提供新ID,因此请始终正确解析其响应并存储它可能提供的新ID,并将其链接到设备。

  3. GCM并不关心您的应用使用哪个Google帐户。这意味着您可以使用同一帐户注册任意数量的设备。您必须管理推送通知的设备,因为ID由设备管理。

  4. 小心:最近有一些关于API的更改,因此您在互联网上找到的许多非官方教程可能会指向已弃用的方法。

答案 1 :(得分:2)

  1. 还有其他发送通知的方式,例如Tokodu和RabbitMQ。如果X优于Y,我不会过去,因为StackOverflow不允许这样做。

  2. 为设备生成唯一的设备令牌,您使用此设备令牌的方式完全取决于您。您可以通过实现登录系统使其对用户唯一,以便创建设备令牌并将其存储在数据库中(与用户信息一起)。假设两个不同的用户在共享设备上使用您的应用程序,如果您允许,他们都可以在同一设备上接收通知。这取决于你自己的实现。

  3. 这又取决于您选择在客户端和服务器端实现GCM功能的方式。例如,您可以选择为用户安装应用程序的每个设备存储设备令牌,或者您可以存储最新的设备令牌,以便仅将通知发送到用户的某个设备。

  4. 我希望这有助于澄清一些事情。

答案 2 :(得分:2)

除了上面的好答案,如果您需要针对无法访问Internet 的工作环境的推送通知解决方案,我建议微软的 SignalR ,它已经支持Android和Java (您可以在GitHub了解更多信息。

希望这有点帮助!