Android消息 - 开发与分发

时间:2013-05-23 15:23:04

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

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

  1. 控制“徽章” for Android
  2. 通过Distribution(制作)与Development发送“推送通知”
  3. 幸运的是,我找到了#1的答案,感谢this question使用Status Bar Notifications

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

1 个答案:

答案 0 :(得分:7)

Google Cloud Messaging的开发和分发之间没有区别。所有消息都从服务器发送到同一GCM端点。 如果要区分开发设备和非开发设备,则必须在服务器的DB上进行管理(对于存储在服务器中的每个注册ID,添加一个标记,表明它是否为开发设备)。

编辑:

实际上你还能做些什么,虽然我不确定这是个好主意。当应用注册到GCM时,它会提供sender IDGoogle API project ID)。您可以使用两个不同的project IDs用于开发版本和生产版本。注册过程返回的registration IDsproject ID绑定。现在,当您从服务器发送GCM消息时,您使用与API key绑定的project ID发送该消息。如果您使用与开发API key绑定的project ID,则只有与registration IDs绑定的project ID(即它们来自具有开发版本的设备)将工作。使用“production”registration IDs发送消息将导致MismatchSenderId错误(与生产环境中沙盒设备令牌无效的方式类似于APNS,反之亦然)。我不确定这是一个好主意,因为你不想依赖谷歌的错误来为你的逻辑。如果您只想向客户的子集发送消息,则应在数据库中管理此子集。