iOS上的重复推送通知

The*_*heQ 8 iphone push-notification apple-push-notifications ios

这个问题可能与Duplicate Apple APNS推送通知相同?,但由于那个没有得到答案,而且我有更多的信息,我会再试一次.

重现问题的步骤:

  • 设置通知中心以将通知显示为警报,这将使问题更加明显.
  • 确保应用程序未在前台运行.
  • 快速连续发送3个相同的推送通知.
  • 等到消息到达手机,您现在必须解除警报3次.
  • 现在发送另外1个通知,这与之前的通知不同.
  • 您现在可以获得最后一次通知,但您还会再次显示之前的通知之一.这就是问题.
  • 如果你继续发送单个通知,前3个中的一个将不会弹出.

以下是按照这些步骤操作的视频,其中清楚地显示了问题:

http://youtu.be/TSqt8S4FY6w

正如Remy Gale在上面的链接问题中所做的那样,确保我们的通知以正确的方式发送,并且每个通知只发送一次.我们还用sandbox-apns和production-apns对它进行了测试,两者的行为完全相同.

如果app-badge设置为0,问题就会消失,从而删除通知中心的所有通知.手动删除通知没有帮助.

UIApplication *app = [UIApplication sharedApplication];
app.applicationIconBadgeNumber = 0;
Run Code Online (Sandbox Code Playgroud)

但这不是解决方案.

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

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

有谁知道为什么会这样?有没有人有可行的解决方案?

Don*_*Don 7

这个Google Group for Gmail有一个来自用户的条目,该用户已经对该漏洞进行了一些研究,并提供了可能的解决方法.根据该条目,该错误在iOS 5中不存在,但在iOS 6中引入.

解决方法是简单地在标题上附加一个随机数的零宽度非连接符,以确保唯一性.