【发布时间】:2021-06-28 17:11:49
【问题描述】:
我们正在为 iOS 设备创建一个 IM 应用程序,并且我们使用 APN 通知来通知用户每次他们的聊天中有新消息时。阅读the documentation,Apple 建议,“因为无法保证远程通知的传递,所以永远不要在有效负载中包含 [...] 可以通过其他方式检索的数据。”
这对我来说似乎有点不合逻辑。仅仅因为可以通过其他方式检索数据,这是不将其放入通知有效负载的理由吗?如果我们在通知负载中包含聊天消息正文(其中正文的大小将不大于 1KB),我们可以缓存消息并在用户打开应用程序时立即显示它,而不是应用程序必须将消息发送到服务器,从而引入了额外的延迟。
当然,APS 通知可能会出现乱序,并且无法保证送达,因此我们会使用消息日期对消息进行排序并调用服务器以获取任何未通过 APS 送达的消息。但是对于确实通过 APS 传递的消息,我不明白为什么我们不将整个消息正文包含在通知中。
Apple 的文档给出了电子邮件的示例,其中电子邮件正文不会在 APN 正文中传递,而是由应用程序单独下载。但是,电子邮件通常比 IM 正文大得多,并且可以达到数兆字节。我们的 IM 主体会小得多,所以这不是一个很好的例子。
我是否遗漏了什么,因为技术原因不包含如此小的 IM 消息正文?这让我有点想知道,如果你不应该捆绑这种东西,为什么通知的大小可以达到 4KB。
【问题讨论】:
标签: ios apple-push-notifications