在ios中设备连接回internet时获取所有通知

在ios中设备连接回internet时获取所有通知,ios,objective-c,iphone,apple-push-notifications,Ios,Objective C,Iphone,Apple Push Notifications,我在objective-c中开发了一个iOS聊天应用程序,当UserA向UserB发送消息时,UserB会收到推送通知。当UserB收到推送通知时,它会调用一个url到我的后端,以告知UserA您的消息已传递给UserB(当应用程序未运行或被终止时)。这一切都很好,反之亦然 但我的问题是,当UserA向UserB发送超过5-10条消息时,UserB未连接到internet(我的后端也通过FCM向UserB发送成功消息)。当UserB连接到internet后,它只接收最近的通知 这是因为苹果正在维

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

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

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

因此,为了解决这个问题,我尝试在通过fcm发送推送通知请求时添加apns collapse id参数。但这一次最多只能合并4个通知。此外,此场景并非始终有效。有时只收到一条信息,而不是全部

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

请指导我现在如何解决这个问题。
提前感谢。

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

  • 从APN中删除所有挂起的通知
  • [[UNUserNotificationCenter currentNotificationCenter]删除所有相关通知请求]

  • 调用服务并从服务器中提取特定用户的所有通知
  • 从服务器收到响应后,在应用程序中显示本地通知
  • 同时通知服务器已显示哪些通知,并将其标记为已在服务器上送达。以便下次您可以获得所有尚未送达的通知

  • 使用
    getPendingNotificationRequests
    UNUserNotificationCenter的概念