在iOS上重复推送通知

这个问题可能是一样的重复苹果APNS推送通知? 但是由于那个人没有得到答案,而且我有更多的信息,我会再试一次。

重现问题的步骤:

  • 设置通知中心显示通知作为警报,这将使问题更加明显。
  • 确保应用程序没有在前台运行。
  • 快速连续发送3个相同的推送通知。
  • 等到信息到达电话,你现在不得不closures警报3次。
  • 现在再发送1个通知,这与以前的不一样。
  • 您现在可以看到最后一条通知,但是您还会看到之前的一条通知再次显示。 这就是问题。
  • 如果您继续发送单个通知,前3个中的一个会在不应该时popup。

下面是一个video,这些步骤清楚地显示了问题:

在上面的链接问题中,我们和Remy Gale一样,确保我们的通知以正确的方式发送,并且每个通知只发送一次。 我们还testing了这个沙箱apns和生产apns,都performance完全一样。

如果应用程序徽章设置为0,问题就会消失,然后从通知中心删除所有通知。 手动删除通知不会有帮助。

UIApplication *app = [UIApplication sharedApplication]; app.applicationIconBadgeNumber = 0; 

但这不是一个解决scheme。

如果所有通知都包含唯一文本,则不会出现该问题。 向警报文本添加一个GUID将使问题消失。 将它作为自定义属性或作为本地化的参数添加到apns-payload将无济于事,因此这也不是解决scheme。

这可能很less发生在具有实时应用程序的生产环境中,但是可能发生,并且当它发生时,这对用户来说真的很烦人!

有谁知道这是为什么发生? 有没有人有一个可行的解决scheme?

这个GoogleGroup for Gmail有一个来自已经研究过这个bug的用户的input,并且包含一个可能的解决方法。 根据input的错误是不存在的iOS 5,但是与iOS 6引入。

解决方法是简单地将一个随机数的零宽度非joiner添加到标题以确保唯一性。

这可能是服务器在向APN发送推送通知时select的时间戳的问题。 只select最新的时间戳。