请原谅我不知道正确的 Android语言。我来自iOS背景,所以我想学习如何在Android世界中正确地做两件事。
Distribution
(制作)与Development
发送“推送通知”。幸运的是,我找到了#1的答案,感谢this question使用Status Bar Notifications
。
现在为#2。我已经有 GCM 设置,可以向所有已注册的设备发送通知。但是,有时我希望能够向所有用户的手机发送通知,有时只能向“开发”设备发送通知。对于iOS,这是通过从App Store / Ad-Hoc环境(Distribution
)下载的设备和已物理插入计算机的设备进行区分的设备,该计算机将源符合其设备(Development
)。对于Android有什么类似的东西吗?
答案 0 :(得分:7)
Google Cloud Messaging的开发和分发之间没有区别。所有消息都从服务器发送到同一GCM端点。 如果要区分开发设备和非开发设备,则必须在服务器的DB上进行管理(对于存储在服务器中的每个注册ID,添加一个标记,表明它是否为开发设备)。
编辑:
实际上你还能做些什么,虽然我不确定这是个好主意。当应用注册到GCM时,它会提供sender ID
(Google API project ID
)。您可以使用两个不同的project IDs
用于开发版本和生产版本。注册过程返回的registration IDs
与project ID
绑定。现在,当您从服务器发送GCM消息时,您使用与API key
绑定的project ID
发送该消息。如果您使用与开发API key
绑定的project ID
,则只有与registration IDs
绑定的project ID
(即它们来自具有开发版本的设备)将工作。使用“production”registration IDs
发送消息将导致MismatchSenderId
错误(与生产环境中沙盒设备令牌无效的方式类似于APNS,反之亦然)。我不确定这是一个好主意,因为你不想依赖谷歌的错误来为你的逻辑。如果您只想向客户的子集发送消息,则应在数据库中管理此子集。