来自Uniqush的重复GCM消息

时间:2012-12-04 18:22:12

标签: android google-cloud-messaging unsubscribe

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

我理解GCM应该自动处理:

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

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

这是Uniqush,我的程序,GCM或三者的某种组合中的失败吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  • 在手机上安装测试应用,然后使用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。我已经在下一个版本中修复了这个bug。它很快就会上线了。 (如果您对此感兴趣,请查看.deb package

事实上,uniqush旨在能够处理这种情况,以便用户不需要关心取消订阅,设备令牌/注册ID更新等。

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