当设备在ios中连接回互联网时获取所有通知

我在objective-c中开发了一个iOS聊天应用程序,其中UserA在此时向UserB发送消息,UserB获得推送通知。 当UserB获得推送通知时,它会向我的后端调用一个URL来了解UserA您的消息已发送给UserB(当应用程序未运行或被杀死时)。 这一切都很好,反之亦然。

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

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

因此,为了解决这个问题,我尝试在发送通过fcm发送推送通知的请求时添加apns-collapse-id参数。 但这只是一次只能组合最多4个通知。 此场景也无法一直运行。 有时只收到1条消息。

总之,我想显示所有的消息通知,与Whatsapp一样,在连接到互联网时显示所有通知。

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

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

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

    [[UNUserNotificationCenter currentNotificationCenter] removeAllPendingNotificationRequests];

  2. 调用服务并从特定用户的服务器中提取所有通知。

  3. 当您收到服务器的回复时,请在您的应用中显示本地通知。
  4. 还要通知您的服务器您显示的所有通知,并在服务器上标记它们。 这样下次您就可以获得尚未发送的所有通知。