iOS 上的重复推送通知

Posted

技术标签:

【中文标题】iOS 上的重复推送通知【英文标题】:Duplicate push notifications on iOS 【发布时间】:2013-08-06 07:51:39 【问题描述】:

这个问题可能和Duplicate Apple APNS push notifications?一样,但由于那个问题没有得到答案,而且我有更多信息,我会尝试再问一次。

重现问题的步骤:

将通知中心设置为将通知显示为警报,这将使问题更加明显。 确保应用没有在前台运行。 快速连续发送 3 个相同的推送通知。 等到消息到达手机,您现在必须解除警报 3 次。 现在再发送 1 个通知,这与之前的通知不同。 您现在会收到最后一条通知,但您还会再次看到之前的通知之一。这就是问题所在。 如果您继续发送单个通知,前 3 个通知中的一个会在不应该出现的时候不断弹出。

这是一个遵循这些步骤的视频,清楚地显示了问题:

http://youtu.be/TSqt8S4FY6w

正如 Remy Gale 在上述链接问题中所做的那样,我们确保我们的通知以正确的方式发送,并且每个通知仅发送一次。我们还使用沙盒 apns 和生产 apns 对此进行了测试,两者的行为完全相同。

如果 app-badge 设置为 0,问题就会消失,这反过来会从通知中心删除所有通知。手动删除通知没有帮助。

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

但这不是解决方案。

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

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

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

【问题讨论】:

由于推送通知是由操作系统处理的,我猜你无能为力。我会将此作为错误报告给 Apple,并向他们提供测试应用程序和您的 youtube 电影。 【参考方案1】:

此 Gmail 的 Google Group 有一个用户的条目,该用户对该错误进行了一些研究,并提供了一种可能的解决方法。根据条目,该错误在 ios 5 中不存在,但在 iOS 6 中引入。

解决方法是简单地将随机数 Zero-width non-joiner 附加到标题以确保唯一性。

【讨论】:

我想这将不得不这样做【参考方案2】:

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

【讨论】:

以上是关于iOS 上的重复推送通知的主要内容,如果未能解决你的问题,请参考以下文章

接收重复的推送通知ios9

ios 8 Simulator,是不是可以向模拟器发送推送通知[重复]

免费苹果帐户上的 ios 推送通知开发

ios上的实时推送通知教程

处理锁屏ios上的推送通知

Linphone如何支持Android / iOS上的推送通知