Android 消息 - 开发与分发

标签 android push-notification google-cloud-messaging android-notifications

请原谅我不知道 正确的 Android 术语。我有 iOS 背景,所以我想学习如何在 Android 世界中正确地做两件事。

  1. 控制 Android 的“徽章”
  2. 通过分发(生产)与开发发送“推送通知”

幸运的是,我找到了 #1 的答案,即使用 Status Bar Notifications 感谢 this question .

现在是#2。我已经设置了 GCM 并且可以向所有已注册的设备发送通知。但是,有时我希望能够向所有用户的手机发送通知,有时只向“开发”设备发送通知。对于 iOS,这是通过从 App Store/Ad-Hoc 环境(Distribution)下载的设备和物理插入计算机的设备( >开发)。 Android 有类似的东西吗?

最佳答案

Google Cloud Messaging 中的开发和分发没有区别。所有消息都从您的服务器发送到同一个 GCM 端点。 如果你想区分开发设备和非开发设备,你必须在服务器的数据库上管理它(对于你存储在服务器中的每个注册 ID,添加一个标志,说明它是否是开发设备)。

编辑:

实际上,您还可以做一些其他事情,但我不确定这是不是个好主意。当应用程序注册到 GCM 时,它会提供一个 sender ID (这是一个 Google API project ID )。您可以使用两个不同的 project IDs用于开发发布和生产发布。 registration IDs注册过程返回的与 project ID 相关联.现在,当您从服务器发送 GCM 消息时,您使用 API key 发送它与 project ID 相关联.如果您使用 API key与您的发展息息相关project ID , 只有 registration IDsproject ID相关联(即它们源自具有开发版本的设备)将起作用。使用“生产”发送消息 registration IDs将导致 MismatchSenderId错误(类似于 APNS,沙盒设备 token 在生产环境中无效,反之亦然)。我不确定这是个好主意,因为您不想依赖 Google 的错误来判断您的逻辑。如果您只想向一部分客户发送消息,则应在您的数据库中管理该子集。

关于Android 消息 - 开发与分发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717864/

相关文章:

java - Android 服务器应用程序 : SSLHandshakeException (unable to find valid certification path to requested target)

iOS:为推送通知注册设备

android - 使用 C2DM 注册 Android 应用程序

java - 线程 "main"java.lang.NoSuchFieldError : ifpossible 中出现异常

c# - 如何从 Firebase 获取 Item Key

具有监听器绑定(bind)的 Android DataBinding 表达式

java - 试图了解我是否需要 WakeLock

android - WebSockets 能耗

android - GCM 在 Android 4 以下收不到消息

php - 我们如何从 PHP 服务器向数千台设备(注册 ID)发送推送通知