gpt4 book ai didi

ios - 在服务器数据库更新时通知 iOS 应用程序的最佳方式

转载 作者:可可西里 更新时间:2023-11-01 02:57:03 27 4
gpt4 key购买 nike

我是编程新手,找不到有效的解决方案来解决我的问题。有人能给我指出正确的方向吗?

我有一个严重依赖服务器数据的应用程序。服务器上的数据对于每个用户都是唯一的,可能每分钟更改一次,也可能仅每隔几个小时更改一次。目前我在应用程序激活时更新本地数据,但我还需要一种方法来通知应用程序在应用程序处于事件状态并且服务器上的数据已更改时触发更新。我考虑了几个解决方案:

1) NSTimer 设置为一分钟并触发 url 请求以检查服务器上是否有新数据。比较 lastModified 值后的服务器将返回可用的新数据。

  • 我不太喜欢这个解决方案,因为我不想让我的服务器因请求过多而重载,尤其是数据库中的数据可能每隔几个小时甚至更长时间才会更改一次。

2) APNS - 每次数据发生变化时从服务器发送通知,并在收到通知时使用服务器数据库更新本地数据。

  • 这似乎是一个不错的解决方案,但前提是可以限制在应用程序处于事件状态时接收远程通知。据我所知,这是不可能的,正如我之前提到的,数据甚至每分钟都可能发生变化,因此我不想在应用程序未运行时向用户发送大量通知垃圾邮件。

3) 使用 NSStream/CFStream 的 TCP 套接字?

  • 这是我以前从未做过的事情,所以我什至不确定我是否正在朝着正确的方向研究这个问题。

最佳答案

这通常是一个很难的话题,但越来越多的技术正在出现以帮助解决这个问题。结合您的每个解决方案的想法:

  1. NSTimer 解决方案实际上是轮询,这是我认为最糟糕的选择。对于每个用户,您都会非常努力地访问您的服务器。

  2. 这会是一个更好的解决方案。 APNS 现在支持静默通知,因此您可以向用户发送推送通知,而不必担心通知他们。您可以通过在有效负载中包含内容可用 key 而不包含警报 key 来发送静默通知。更多信息在这里:http://hayageek.com/ios-silent-push-notifications/ .不过,它是有速率限制的。您可能会在几分钟到几小时内得不到送货,所以如果这很重要,您最好选择选项 3。

  3. 这是您的最佳解决方案。它需要与您的服务器建立持久连接。 AFNetworking 2.0 支持这种基于 Rocket 的连接。这是 Rocket 的文档:http://rocket.github.io .查看服务器发送的事件。

希望对您有所帮助!

关于ios - 在服务器数据库更新时通知 iOS 应用程序的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com