iOS上的重复推送通知

8
这个问题与重复的苹果APNS推送通知差不多,但由于那个问题没有得到答案,我有更多的信息,所以我会再次尝试提问。
重现问题的步骤:
1.将通知中心设置为显示警报通知,这将使问题更加明显。 2.确保应用程序未在前台运行。 3.快速连续发送3条相同的推送通知。 4.等待消息到达手机,您现在必须三次消掉警报。 5.现在发送1条不同于以前的通知。 6.现在您将获得最后一条通知,但您也将再次看到以前的某个通知。这就是问题所在。 7.如果您继续发送单个通知,则第一批3条通知中的一条将会在不应该出现的情况下不断弹出。
这是一个遵循这些步骤的视频,清楚地显示了问题: http://youtu.be/TSqt8S4FY6w 我们像上面链接的 Remy Gale 一样确定我们的通知以正确的方式发送,并且每次只发送一次。我们还使用sandbox-apns和production-apns进行了测试,两者的行为完全相同。
如果将应用程序徽章设置为0,则问题会消失,这反过来会从通知中心删除所有通知。手动删除通知没有帮助。
UIApplication *app = [UIApplication sharedApplication];
app.applicationIconBadgeNumber = 0;

但这并不是一个解决方案。
如果所有通知都包含唯一的文本,则问题不会出现。将GUID添加到警报文本中将使问题消失。将其作为自定义属性或本地化参数添加到apns-payload中将无法帮助,因此这也不是一个解决方案。
在生产环境中使用实时应用程序可能很少发生这种情况,但它可能会发生,当发生时,对于用户来说真的很烦人!
有人知道为什么会发生这种情况吗?有没有可行的解决方案?

由于推送通知是由操作系统处理的,我想你无法做太多来解决这个问题。我建议你将此报告给苹果作为一个错误,并向他们提供一个测试应用程序和你的 YouTube 视频。 - rckoenes
2个回答

7
这个 Gmail 的 Google Group 里有一个用户调查了一下这个 bug 并提供了一个可能的解决方法。根据他的记录,这个问题在 iOS 5 中不存在,但在 iOS 6 中引入了这个问题。
解决方法是在标题后加上若干个零宽不连字符来确保唯一性。

我猜那就只能这样了。 - TheQ

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接