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

标签 android google-cloud-messaging

  1. GCM 是 Android 中推送通知的唯一方式吗?它是否优于其他方法(如果有的话)?

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

  3. 扩展到我在 2 中提出的问题,假设单个用户在不同设备上的我的应用程序中使用他的 g-mail id。 GCM 是向所有这些设备推送通知,还是只向其中一个设备推送通知?如果是,那么它的优先级如何?

最佳答案

  1. 不,Android 中还有其他推送通知服务,例如Parse .但是,强烈建议使用任何具有 Google Play 商店的 Android 设备中存在的默认推送通知服务,因为这样可以减少电池使用量。但是,如果您将应用推向其他地方,例如亚马逊商店,请记住 Kindle Fire 不遵守此规定并且没有 Google Play 服务——至少据我所知是这样。

  2. 注册 token 非常不稳定并且根本没有绑定(bind)到电子邮件。实际上,有时同一台设备可能会突然得到一个新的 GCM ID。有很多关于 GCM 最佳实践的教程,但是 Google's是最好的开始方式。为防止出现问题,您应该做的是将设备的 GCM ID 存储在数据库中,这样您就可以始终知道当前与您的设备相关联的 ID。 GCM 可能会无缘无故地为您提供新 ID,因此请务必正确解析其响应并存储它可能提供的新 ID,并将其链接到设备。

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

注意:最近 API 发生了一些变化,因此您在 Internet 上找到的许多非官方教程可能指向已弃用的方法。

关于android - 我在我的应用程序中使用 Google Cloud Messaging 推送通知,对此我有 2 个基本疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445854/

相关文章:

java - ViewModel中的LiveData对象为什么要在声明的时候实例化?

android - 找不到 com.google.android.gms :play-services:3. 1.59 3.2.25 4.0.30 4.1.32 4.2.40 4.2.42 4.3.23 4.4.52 5.0.77 5.0.89 5.2.08 6.1.11 6.1.71 6.5。 87

android - 从 Android 中的唤醒 Intent 服务将数据插入数据库

android - 接收从 Google Cloud Messaging 发送的消息 - Android

java - GooglePlayServices.isGOoglePlayServicesAvailable NoClassDefFoundError

google-app-engine - 如何为 Chrome 扩展设置 App Engine 后端?

android - 我如何修复 ionic mac android 模拟器错误中的 "emulator: Failed to sync vcpu reg"错误

java - Android 中的 Toast 定时器

android - 存储用户可访问的配置文件的最佳位置

java - Android - 实时位置共享