【问题标题】:Android Messages - Development vs DistributionAndroid 消息 - 开发与分发
【发布时间】:2013-05-23 15:23:04
【问题描述】:
请原谅我不知道正确 Android 术语。我来自 iOS 背景,所以我正在尝试学习如何在 Android 世界中正确地做两件事。
- 为 Android 控制 “徽章”
- 通过
Distribution(生产)与Development发送“推送通知”。
幸运的是,感谢this question,我找到了#1 的答案,即使用Status Bar Notifications。
现在是#2。我已经有一个 GCM 设置并且可以向所有注册的设备发送通知。但是,有时我希望能够向所有用户的手机发送通知,有时只向“开发”设备发送通知。在 iOS 中,这与从 App Store/Ad-Hoc 环境下载的设备 (Distribution) 和物理插入将源代码安装到其设备上的计算机的设备 (Development) 区别开来。 Android 有没有类似的东西?
【问题讨论】:
标签:
android
push-notification
google-cloud-messaging
android-notifications
【解决方案1】:
Google Cloud Messaging 中的开发和分发没有区别。所有消息都从您的服务器发送到同一个 GCM 端点。
如果您想区分开发设备和非开发设备,则必须在服务器的数据库上对其进行管理(对于存储在服务器中的每个注册 ID,添加一个标志,说明它是否是开发设备)。
编辑:
实际上,您还可以做一些其他事情,尽管我不确定这是否是个好主意。当应用程序注册到 GCM 时,它会提供 sender ID(即 Google API project ID)。您可以使用两个不同的project IDs 进行开发发布和生产发布。注册过程返回的registration IDs 与project ID 绑定。现在,当您从服务器发送 GCM 消息时,您使用绑定到 project ID 的 API key 发送它。如果您使用与您的开发project ID 相关联的API key,则只有与project ID 相关联的registration IDs(即它们源自具有开发版本的设备)将起作用。发送带有“生产”registration IDs 的消息将导致MismatchSenderId 错误(类似于 APNS,沙盒设备令牌在生产环境中无效,反之亦然)。我不确定这是一个好主意,因为你不想依赖谷歌的错误来判断你的逻辑。如果您只想向一部分客户端发送消息,则应在数据库中管理该子集。