7

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

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

Status Bar Notifications幸运的是,由于这个问题,我找到了#1 的答案。

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

4

1 回答 1

7

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

编辑 :

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

于 2013-05-23T15:40:08.200 回答