来自Uniqush的重复GCM消息



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

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

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

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

这是Uniqush、我的程序、GCM的失败,还是三者的结合?

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

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

  • 在我的手机上安装测试应用程序,并使用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包)

事实上,uniqush被设计成能够处理这种情况,这样用户就不需要关心退订、设备令牌/注册id更新等。

如果你将来有任何问题,请随时评论或联系我。

最新更新