我希望我的应用程序能够 - 即每12小时 - 即使应用程序未正常运行或处于后台运行状态,向服务器发送HTTP请求,文件与版本号,如果服务器上的版本高于客户端上的版本,则将更多文件下载到磁盘,以便下次启动应用程序时,它会在磁盘上找到新内容。iOS计时后台处理
什么样的设计模式最适合在ios中执行此类任务?
有几个在我脑海中浮现,但我不是那么有经验。
- 也许推送通知,当有新版本可用时,服务器需要将消息推送到所有客户端。
- 或者,有没有类似于Android的Service可以提供帮助?
- 或者,也许每次应用程序启动(或前往前台),只需ping服务器,看看是否有新的东西。
- 或者,每次应用程序开始ping服务器时,再为下一个12h添加一个计时器,以防应用程序仍处于前台。
- 或者,每次应用程序启动时,检查首选项值,如果最后一次服务器被ping通的时间超过12小时,则立即进行ping。然后保存这个ping时间。
选项1可能在服务器上更加沉重,实现起来可能会更加复杂(考虑一个ios newbe),但可能是真正的后台更新的唯一选项。但即便如此,我仍然不希望用户不得不对一些低级数据更新b/wa客户端和服务器做出反应(这就是它的原因),因此除非推送通知可以直接进入应用程序并执行没有用户干预的东西,那么这个选项不会飞。
选项3-5都是可能的,不会听起来太难,但它们只会在应用程序处于前景时才起作用。
据我所知,后台应用程序只能播放音乐,获取位置更新或voip更新。甚至还有this hack的沉默声音试图逃避这个限制。 (并没有被批准到商店)。
也许现场的限制是很好的原因,那么我该如何发挥规则,并能够实现周期性的服务器ping(或者更一般地说,解决定期同步b/w客户端和服务器的问题,即使在应用程序是在BG)?
感谢
我建议4或5的应用程序可以做任何它想做的背景,但只有10分钟。推送通知只能在显示消息并且用户选择打开它时运行代码。 – ughoavgfhw 2011-06-05 21:02:56