当设备在 ios 后重新连接到互联网时获取所有通知

Get all the notification when device connect back to the internet in ios

我在 objective-c 中开发了一个 iOS 聊天应用程序,其中当用户 A 向用户 B 发送消息时,用户 B 会收到推送通知。当 UserB 收到推送通知时,它会调用一个 url 到我的后端,以了解 UserA 您的消息已传递给 UserB(当应用程序未 运行 或被终止时)。这一切都很好,反之亦然。

但我的问题是,当用户 A 向用户 B 发送超过 5-10 条消息时,用户 B 未连接到互联网(我的后端也通过 FCM 向用户 B 发送了成功的消息)。当 UserB 连接到互联网后,它只收到最近的通知。

这是因为苹果正在维护QoS。我阅读了 this 篇文章。

所以为了解决这个问题,我尝试在发送请求时添加 apns-collapse-id 参数以通过 fcm 发送推送通知。但这一次最多只能合并 4 个通知。此外,这种情况并非一直有效。有时只收到 1 条消息而不是全部。

简而言之,我想显示所有消息通知,就像 Whatsapp 连接到互联网时显示所有通知一样。

请指导我现在该怎么做才能解决这个问题。 提前致谢。

在这种情况下你可以做的是,

  1. 从 APNS 中删除所有待处理的通知。

[[UNUserNotificationCenter currentNotificationCenter] removeAllPendingNotificationRequests];

  1. 为特定用户调用服务并从您的服务器中提取所有通知。
  2. 收到服务器的响应后,在您的应用程序中显示本地通知。
  3. 同时通知您的服务器您显示了哪些通知,并在您的服务器上标记它们已送达。以便下次您可以收到所有尚未发送的通知。