我对编程很新,我无法找到解决问题的有效方法。有人能指出我正确的方向吗?
我有一个严重依赖服务器数据的应用程序。服务器上的数据对于每个用户都是唯一的,并且可以每隔一分钟改变,也可以每隔几小时改变目前我在应用程序变为活动状态时更新本地数据但我还需要一种方法来通知应用程序在应用程序保持活动状态且服务器上的数据已更改时触发更新。我想到了一些解决方案:
1)NSTimer设置为一分钟并触发url请求以检查服务器上是否有新数据。比较lastModified值后的服务器将返回新数据(如果可用)。
2)APNS - 每次数据发生变化时从服务器发送通知,并在收到通知时用服务器数据库更新本地数据。
3)使用NSStream / CFStream的TCP套接字?
答案 0 :(得分:4)
这一般是一个很难的主题,但更多的技术正在出现以帮助它。对每个解决方案都有几点想法:
NSTimer解决方案是有效的轮询,这是我觉得最糟糕的选择。你会很难为每个用户点击你的服务器。
这将是一个更好的解决方案。 APNS现在支持静默通知,因此您可以向用户发送推送通知,而无需担心通知他们。您可以通过在有效负载中包含内容可用密钥而不包括警报密钥来发送静默通知。更多信息:http://hayageek.com/ios-silent-push-notifications/。但是这是速率有限的。你可能需要几分钟到几个小时没有交货,所以如果这很重要,你最好去选项3.
这是您最好的解决方案。它需要与您的服务器持久连接。 AFNetworking 2.0支持基于Rocket的这种连接。这是Rocket的文档:http://rocket.github.io。看看服务器发送的事件。
希望有所帮助!