【发布时间】:2014-12-10 23:42:45
【问题描述】:
我正在制作一个接收持续更新(可能每天数百次)的应用,为了提供更好的用户体验,最好在后台下载这些更新。
查看 Apple 的[1] 文档,我需要将后台模式设置为“后台获取”。深入探索,您可以阅读application:performFetchWithCompletionHandler[2] 函数,该函数指出:
当调用此方法时,您的应用程序有最多 30 秒的挂钟时间来执行下载操作并调用指定的完成处理程序块...如果您的应用程序需要很长时间才能调用完成处理程序,它将来获取数据的机会可能会减少。
问题是我们的下载将需要超过 30 秒才能下载,因此宁愿不面对 Apple 发送更新越来越少的愤怒,因此加剧问题!
那么,我能以某种方式做到这一点吗?
另外,我创建了一个粗略的实验,我创建了一个NSTimer:scheduledTimerWithTimeInterval 来运行每分钟记录到控制台的日志。这在模拟的 iPhone 上(已经运行了 30 分钟以上)以及当我将它放在手机上(一周以上)时都成功运行......为什么会这样!?
【问题讨论】:
-
如果您的下载时间真的超过 30 秒,可能每天数百次,那么您可能会首先面对没有无限数据或内存的用户的愤怒。您也可以在您的应用程序中使用 performSelectorInBackground 来执行基本相同的操作(从您的描述中可以看出),而无需处理后台获取。
标签: ios objective-c iphone xcode