Android消息——开发vs分发



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

  1. 控制"徽章" Android
  2. 发送"推送通知"通过Distribution(生产)vs Development

幸运的是,我找到了#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 IDAPI key发送它。如果您使用与开发project ID绑定的API key,则只有与该project ID绑定的registration IDs(即它们源自具有开发构建的设备)才能工作。使用"生产"registration IDs发送消息将导致MismatchSenderId错误(这与APNS类似,沙箱设备令牌在生产环境中无效,反之亦然)。我不确定这是不是一个好主意,因为你不想依靠谷歌的错误来进行逻辑分析。如果您希望仅向客户端的子集发送消息,则应该在数据库中管理此子集。

最新更新