从应用服务器接收 GCM 推送通知消息的步骤
Posted
技术标签:
【中文标题】从应用服务器接收 GCM 推送通知消息的步骤【英文标题】:Steps to receive GCM push notification message from app server 【发布时间】:2015-11-11 12:07:34 【问题描述】:我们正在开发适用于 ios 和 android 的应用程序。 IOS 已启用 GCM 推送通知,现在可以正常工作。两个平台的软件包名称将相同。
ios 开发人员给了我 SERVER API KEY 和 SENDER ID 来为 android 设置 gcm。在寻找步骤时,我遇到了https://developers.google.com/cloud-messaging/android/client。
我一直对自己说需要完成内容中列出的步骤才能为 android 设置 GCM(如果我错了,请纠正我)。
-
获取配置文件并将其添加到 Android 项目中
设置 Google play 服务(我在项目依赖项中添加了 gcm)
向清单文件添加条目
检查 google play services APK
获取注册令牌。
“Android 应用需要先注册到 GCM 连接服务器才能接收消息”
“客户端应用程序应存储一个布尔值,指示注册令牌是否已发送到服务器。” - 我的后端团队告诉我,我不需要向他们发送任何内容,只需在应用程序中配置 gcm,应用程序就会收到来自后端的消息。
所以,我的问题是我需要RegistrationIntentService 和MyInstanceIDListenerService。另外,我必须在 Manifest 中定义我的 InstanceIDListenerService 吗?
我们的后端使用设备 ID 向设备发送推送通知,因此当我们发送设备 ID 时,它们不需要向它们发送注册令牌。那么在这种情况下,我应该使用 RegistrationIntentService 和 InstanceIDListenerService 向 GCM 注册我的应用程序吗?如果是这样,应用程序是否应该自己保留注册令牌。需要注册吗?
【问题讨论】:
【参考方案1】:GCM 支持三种类型的下游(服务器到客户端)消息传递:发送到特定设备(也称为“简单”或“目标”)、发送到主题或发送到设备组。您的问题是,“我们的后端使用设备 ID 向设备发送推送通知”。目前尚不清楚“设备 ID”是什么以及您打算使用哪种类型的消息传递。您的后端团队告诉您“不需要向他们发送任何东西”。如果这是真的,我不知道他们从哪里获得“设备 ID”。
GCM 提供的三种消息传递类型中的每一种都需要客户端设备向 GCM 注册并获取注册令牌。要将消息发送到特定设备,注册令牌实际上是“设备 ID”。所以是的,你需要实现类似于documentation 中描述的RegistrationIntentService
和InstanceIDListenerService
。
文档中关于需要将注册令牌发送到应用服务器的描述具有误导性。这仅对有针对性的消息传递是必需的。 documentation for receiving topic messages 声明:“请注意,对于主题消息传递,不需要将注册令牌发送到您的应用服务器;但是,如果您发送它,您的服务器可以验证令牌的有效性并获取有关应用程序的更多信息创造了它。”
【讨论】:
查看 GCM Android 快速入门,此示例仅执行 GCM,因此您可以使用它来查看 Android 上的 GCM 需要什么。 (github.com/googlesamples/google-services/tree/master/android/…)以上是关于从应用服务器接收 GCM 推送通知消息的步骤的主要内容,如果未能解决你的问题,请参考以下文章