【问题标题】:Get all the notification when device connect back to the internet in ios当设备在 ios 中连接回互联网时获取所有通知
【发布时间】:2019-08-19 11:32:25
【问题描述】:

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

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

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

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

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

请指导我现在如何解决此问题。 提前致谢。

【问题讨论】:

  • 使用getPendingNotificationRequestsUNUserNotificationCenter的概念
  • @Anbu.karthik 但是这段代码的问题是我只能获得离线创建的通知,而不是来自 Apple Push Notification Server (APNS) 的通知

标签: ios objective-c iphone apple-push-notifications


【解决方案1】:

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

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

[[UNUserNotificationCenter currentNotificationCenter] removeAllPendingNotificationRequests];

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 2017-09-29
    • 1970-01-01
    • 2012-11-14
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多