【发布时间】:2014-12-19 09:27:12
【问题描述】:
我在使用 GCM 时遇到了一个严重问题。之前我们使用 UrbanAirship 发送推送通知,它使用 GCM 发送推送消息。现在我们已经在客户端和服务器上实现了我们自己的 GCM,并且希望只使用 GCM 发送推送通知。由于一些用户将使用旧版本的应用程序并且可能没有更新到新版本,因此我们必须继续使用 UrbanAirship 向他们发送通知。更新应用程序的用户将仅通过 gcm 获得推送消息。这在调试模式下进行了测试并且工作正常。当通过 UrbanAirship 发送推送消息时,安装了新版本的设备没有收到它。
但是在实时服务器上,当我们尝试发送推送消息时,更新了应用程序并从一开始就与我们在一起的用户(他们曾经通过 UrbanAirship 接收推送消息)收到来自 GCM 和 UrbanAirship 的推送消息。通过 GCM 发送的推送消息包含该消息,但通过 UrbanAirship 发送的消息为空白。第一次安装该应用程序的设备上没有发生同样的事情。这些用户仅通过 GCM 收到推送消息。
我相信这是因为 UrbanAirship 仍然拥有那些用于通过 UrbanAirship 接收推送消息的设备的 device_ids。现在,处理 GCM 和 UrbanAirship 广播的活动使用的权限是相同的,它们都响应意图过滤器中的相同操作。因此,即使 UrbanAirship 的活动已从清单文件中删除,该消息仍由处理 GCM 推送消息的活动处理。
有没有办法阻止 UrbanAirship 向那些曾经通过 UrbanAirship 接收通知的设备发送推送消息?或从 UrbanAirship 注销这些设备?或者我可以通过传递一个额外的参数来修改 GCM 的接收器,如果在应用程序中无法识别,就不会创建推送通知?
【问题讨论】:
-
UrbanAirship API 是否提供注销方法来从 UrbanAirship 注册数据库中删除设备?
标签: android android-intent notifications google-cloud-messaging