【问题标题】:Duplicate GCM messages from Uniqush来自 Uniqush 的重复 GCM 消息
【发布时间】:2012-11-22 11:05:53
【问题描述】:

我正在使用 Uniqush 将 GCM 消息发送到我正在开发的应用程序,到目前为止,它运行良好。但是,由于显而易见的原因,我在开发过程中卸载并重新安装了该应用程序,并且每次新安装时它都会重新注册 GCM。

我知道 GCM 应该自动处理这个问题:

http://developer.android.com/guide/google/gcm/adv.html#unreg

如果无法将消息传递到设备,它会向处理它的服务器发送错误。不幸的是(即使在未安装应用程序的情况下发送了测试推送消息之后)我的设备收到了重复的消息。

这是 Uniqush、我的程序、GCM 还是这三者的某种组合中的故障?

【问题讨论】:

    标签: android google-cloud-messaging unsubscribe


    【解决方案1】:

    根据您的描述,我无法重现您的情况。以下是尝试重现它的步骤:

    • 在我的手机上安装测试应用程序并使用 uniqush 向它推送通知。正确的。 Uniqush 的日志显示它已成功交付,我的手机显示正确的结果。
    • 卸载测试应用。
    • 使用 uniqush 再次推送另一个通知。 Uniqush 的日志显示用户取消订阅服务的消息:[Unsubscribe][Info] 2012/12/21 19:18:08 [UnsubscribeRequest] RequestId=3992a14e4987e94e3ce16bb7394ee06d2d9e7231 Success DeliveryPoint=gcm:47e6551857be173b1418e56b63dbdb8cd58c94a2
    • 然后再向设备推送一条通知,uniqush 说找不到设备(因为它已经被移除了。)
    • 使用redis-cli检查数据库,不再存储设备信息。已成功退订。

    但是,我确实发现了一些问题:如果您检查从 HTTP 的 uniqush 返回的错误消息,那么您将在第二个通知中看到Success。我已经在下一个版本中修复了这个错误。它很快就会上线了。 (如果您对此感兴趣,请查看.deb package

    其实uniqush就是为了处理这种情况而设计的,这样用户就不需要关心退订、设备token/registration id更新等问题了。

    如果您以后有任何问题,请随时发表评论或与我联系。

    【讨论】:

      【解决方案2】:

      如果在设备卸载应用时向设备发送通知,最终重复项会被清除。

      【讨论】:

        猜你喜欢
        • 2013-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多