我对编程很陌生,找不到有效的解决方案。有人能告诉我正确的方向吗?
我有一个非常依赖服务器数据的应用程序。服务器上的数据对每个用户都是唯一的,可能每分钟以及每几个小时都会更改一次。目前,我正在更新本地数据当应用程序变为活动状态,但我也需要一种方法,通知应用程序触发更新当应用程序保持活动状态和数据已在服务器上更改。我想了几个办法:
1)nstimer设置为1分钟,触发url请求,检查服务器上是否有新数据。比较LastModified值后的服务器将返回新数据(如果可用)。
我不太喜欢这个解决方案,因为我不想让我的服务器超载于请求的数量,特别是数据库中的数据可能每隔几个小时甚至更长时间才会更改一次。
2)APNS-每次数据发生更改时从服务器发送通知,并在收到通知时使用服务器数据库更新本地数据。
这似乎是一个很好的解决方案,但前提是当应用程序处于活动状态时,可以限制接收远程通知。据我所知,这是不可能的,正如我之前提到的,数据甚至每分钟都可能发生变化,所以我不想在应用程序不运行时向用户发送大量通知。
3)使用nsstream/cfstream的TCP套接字?
这是我以前从未做过的事情,所以我甚至不确定我是否会朝着正确的方向去研究这个问题。

最佳答案

总的来说,这是一个艰难的话题,但更多的技术正在帮助解决这个问题。对每种解决方案都有几点想法:
nstimer的解决方案是有效地轮询,这是我觉得最糟糕的选择。对于每一个用户来说,你都会很难找到你的服务器。
这将是一个更好的解决方案。apns现在支持无提示通知,因此您可以向用户发送推送通知,而不必担心通知他们。您可以通过在有效负载中包括内容可用密钥而不包括警报密钥来发送静默通知。更多信息请点击:http://hayageek.com/ios-silent-push-notifications/。不过,它的价格是有限的。你可能几分钟到几小时都没有收到快递,所以如果这很重要的话,你最好去选择3。
这是你最好的解决办法。它需要与服务器建立持久连接。AFNetworking 2.0支持这种基于火箭的连接。这是火箭的文件:http://rocket.github.io。查看服务器发送的事件。
希望能有帮助!

07-28 03:06
查看更多