我在我的应用程序中使用 Google 云消息传递进行推送通知,对此我有 2 个基本疑问
I am using Google Cloud Messaging for push notifications in my app and i have 2 basic doubts about it
GCM 是 android 中推送通知的唯一方式吗?它是否优于其他方法(如果有的话)?
所以假设我的设备上的应用程序在 GCM 上注册。是与注册自身的设备相关联的应用程序本身,还是与注册的用户及其电子邮件 ID 相关联的应用程序本身?如果我的用户将来切换设备,同样的 'registration token' 对他有用吗?或者在类似的情况下,如果具有另一个 g-mail id 的用户从同一设备注册到我的应用程序,我是否将通知推送到具有 2 个不同注册令牌的同一设备?
扩展到我在 2 中提出的问题,假设单个用户在不同设备上的我的应用程序上使用他的 g-mail id。 GCM 是向所有这些设备推送通知,还是只向其中一个设备推送通知?如果是,那么它的优先级如何?
不,Android 中还有其他推送通知服务,例如 Parse。但是,强烈建议 使用任何具有 Google Play 商店的 Android 设备中存在的默认推送通知服务,因为这样可以减少电池使用量。但是,如果您将您的应用推向 其他地方 ,例如亚马逊商店,请记住 Kindle Fire 不遵守此规定并且没有 Google Play 服务 -- 在至少据我所知。
注册令牌非常不稳定并且根本没有绑定到电子邮件。实际上,有时同一台设备可能会突然得到一个新的 GCM ID。有许多关于 GCM 最佳实践的教程,但 Google's 是最好的开始方式。为了防止出现问题,您应该 将设备的 GCM ID 存储在数据库中,这样您就可以始终知道当前与您的设备相关联的 ID。 GCM 可能会无缘无故地为您提供新 ID,因此请务必正确解析其响应并存储它可能提供的新 ID,并将其链接到设备。
GCM 并不关心您的应用使用哪个 Google 帐户。这意味着您可以使用同一个帐户注册任意数量的设备。您必须管理向哪些设备推送通知,因为 ID 由设备管理。
注意:最近 API 发生了一些变化,因此您在 Internet 上找到的许多非官方教程可能指向已弃用的方法。
还有其他发送通知的方式,例如Tokodu和RabbitMQ。如果 X 比 Y 好,我不会讨论,因为 Whosebug 不允许这样做。
为设备生成一个唯一的设备令牌,你如何使用这个设备令牌完全取决于你。例如,您可以通过实施登录系统使其对用户唯一,以便创建设备令牌并将其存储在数据库中(与用户信息一起)。假设两个不同的用户在共享设备上使用您的应用程序,如果您允许,他们都可以在同一台设备上接收通知。这取决于你自己的实现。
这又取决于您选择如何在客户端和服务器端实现 GCM 功能。例如,您可以选择为用户安装该应用程序的每台设备存储设备令牌,或者您可以存储最新的设备令牌,以便仅将通知发送到用户的其中一台设备。
我希望这有助于澄清一些事情。
除了上面的好答案,如果你需要一个工作环境的推送通知解决方案没有互联网接入,我建议微软的SignalR ,它已经支持 Android 和 Java(您可以在 GitHub 找到更多信息)。
希望对您有所帮助!
GCM 是 android 中推送通知的唯一方式吗?它是否优于其他方法(如果有的话)?
所以假设我的设备上的应用程序在 GCM 上注册。是与注册自身的设备相关联的应用程序本身,还是与注册的用户及其电子邮件 ID 相关联的应用程序本身?如果我的用户将来切换设备,同样的 'registration token' 对他有用吗?或者在类似的情况下,如果具有另一个 g-mail id 的用户从同一设备注册到我的应用程序,我是否将通知推送到具有 2 个不同注册令牌的同一设备?
扩展到我在 2 中提出的问题,假设单个用户在不同设备上的我的应用程序上使用他的 g-mail id。 GCM 是向所有这些设备推送通知,还是只向其中一个设备推送通知?如果是,那么它的优先级如何?
不,Android 中还有其他推送通知服务,例如 Parse。但是,强烈建议 使用任何具有 Google Play 商店的 Android 设备中存在的默认推送通知服务,因为这样可以减少电池使用量。但是,如果您将您的应用推向 其他地方 ,例如亚马逊商店,请记住 Kindle Fire 不遵守此规定并且没有 Google Play 服务 -- 在至少据我所知。
注册令牌非常不稳定并且根本没有绑定到电子邮件。实际上,有时同一台设备可能会突然得到一个新的 GCM ID。有许多关于 GCM 最佳实践的教程,但 Google's 是最好的开始方式。为了防止出现问题,您应该 将设备的 GCM ID 存储在数据库中,这样您就可以始终知道当前与您的设备相关联的 ID。 GCM 可能会无缘无故地为您提供新 ID,因此请务必正确解析其响应并存储它可能提供的新 ID,并将其链接到设备。
GCM 并不关心您的应用使用哪个 Google 帐户。这意味着您可以使用同一个帐户注册任意数量的设备。您必须管理向哪些设备推送通知,因为 ID 由设备管理。
注意:最近 API 发生了一些变化,因此您在 Internet 上找到的许多非官方教程可能指向已弃用的方法。
还有其他发送通知的方式,例如Tokodu和RabbitMQ。如果 X 比 Y 好,我不会讨论,因为 Whosebug 不允许这样做。
为设备生成一个唯一的设备令牌,你如何使用这个设备令牌完全取决于你。例如,您可以通过实施登录系统使其对用户唯一,以便创建设备令牌并将其存储在数据库中(与用户信息一起)。假设两个不同的用户在共享设备上使用您的应用程序,如果您允许,他们都可以在同一台设备上接收通知。这取决于你自己的实现。
这又取决于您选择如何在客户端和服务器端实现 GCM 功能。例如,您可以选择为用户安装该应用程序的每台设备存储设备令牌,或者您可以存储最新的设备令牌,以便仅将通知发送到用户的其中一台设备。
我希望这有助于澄清一些事情。
除了上面的好答案,如果你需要一个工作环境的推送通知解决方案没有互联网接入,我建议微软的SignalR ,它已经支持 Android 和 Java(您可以在 GitHub 找到更多信息)。
希望对您有所帮助!