这个问题可能与Duplicate Apple APNS push notifications 相同?,但由于那个人没有得到答案,而且我有更多信息,我会尝试再问一次。
重现问题的步骤:
- 将通知中心设置为将通知显示为警报,这将使问题更加明显。
- 确保应用程序没有在前台运行。
- 快速连续发送 3 个相同的推送通知。
- 等到消息到达手机,您现在必须解除警报 3 次。
- 现在再发送 1 个通知,这与之前的通知不同。
- 您现在会收到最后一条通知,但您还会再次看到以前的通知之一。这就是问题。
- 如果您继续发送单个通知,则前 3 个通知中的一个将在不应该出现的时候不断弹出。
这是遵循这些步骤的视频,清楚地显示了问题:
正如 Remy Gale 在上面的链接问题中所做的那样,我们确保我们的通知以正确的方式发送,并且每个通知仅发送一次。我们还使用沙盒 apns 和生产 apns 对此进行了测试,两者的行为完全相同。
如果 app-badge 设置为 0,问题就会消失,这反过来会从通知中心删除所有通知。手动删除通知没有帮助。
UIApplication *app = [UIApplication sharedApplication];
app.applicationIconBadgeNumber = 0;
但这不是解决方案。
如果所有通知都包含唯一文本,则不会出现问题。向警报文本添加 GUID 将使问题消失。但是,将其作为自定义属性或本地化参数添加到 apns-payload 将无济于事,因此这也不是解决方案。
这可能很少会在具有实时应用程序的生产环境中发生,但它可能会发生,而且当它发生时,这对用户来说真的很烦人!
有谁知道为什么会这样?有没有人有可行的解决方案?