原谅我不知道正确的 Android术语。我来自iOS背景,所以我正在努力学习如何在Android世界中正确地做两件事。
- 控制"徽章" Android
- 发送"推送通知"通过
Distribution
(生产)vsDevelopment
。
幸运的是,我找到了#1的答案,那就是使用Status Bar Notifications
。
现在是#2。我已经有一个GCM设置,可以向所有注册设备发送通知。然而,有时我希望能够向所有用户的手机发送通知,有时只向"开发"设备发送通知。对于iOS,这是由从App Store/Ad-Hoc环境(Distribution
)下载的设备和物理插入计算机的设备(Development
)来区分的。Android有类似的功能吗?
在Google Cloud Messaging中,开发和分发没有区别。所有消息都从服务器发送到相同的GCM端点。如果您想要区分开发设备和非开发设备,则必须在服务器的DB上管理它(对于存储在服务器中的每个注册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类似,沙箱设备令牌在生产环境中无效,反之亦然)。我不确定这是不是一个好主意,因为你不想依靠谷歌的错误来进行逻辑分析。如果您希望仅向客户端的子集发送消息,则应该在数据库中管理此子集。