0

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

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

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

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

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

4

2 回答 2

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在第二个通知中看到。我已经在下一个版本中修复了这个错误。它很快就会上线了。(如果您对此感兴趣,请查看.deb 包

事实上,uniqush 就是为了能够处理这种情况而设计的,这样用户就不需要关心取消订阅、设备令牌/注册 id 更新等。

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

于 2012-12-22T00:33:55.470 回答
0

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

于 2012-12-06T12:29:02.777 回答