【问题标题】:UrbanAirship vs GCM NotificationUrbanAirship 与 GCM 通知
【发布时间】: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


【解决方案1】:

您可以通过以下方式为您的设备发送哈希 id 来注册您的设备:

UAirship.shared().getPushManager().getNamedUser().setId(msisdn)

并通过设置named user = null来取消注册:

UAirship.shared().getPushManager().getNamedUser().setId(null);

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多