我正在创建一个 iPad 应用程序,我需要以下功能:
每当应用程序运行时(例如,在后台或前台),定期(例如,每小时一次)检查一些 HTTP(s)并可能下载和存储一些数据。
这背后的动机是允许应用程序缓存一些数据,以便在需要时可以离线使用。我知道这会缩短电池寿命,但现在这不是问题。
根据我在Apple iOS Programming Guide: Background Execution and Multitasking中阅读的内容,应用程序可以执行后台任务。我找不到适合我需要的案例:
- 在后台执行有限长度任务:这仅适用于“从前台进入后台”任务。
- 安排本地通知的传递:显然不是这样,我正在创建任何通知,我只需要下载一些数据。
- 实现长时间运行的后台任务:这似乎是一个问题,但在探索时,它有几个类别,我没有找到任何可以涵盖我的用例(从 apple.com 复制粘贴):
audio
— 应用程序在后台向用户播放有声内容。(此内容包括使用 AirPlay 的流式音频或视频内容。)location
- 该应用程序让用户随时了解他们的位置,即使它在后台运行。voip
— 该应用程序使用户能够使用 Internet 连接拨打电话。newsstand-content
— 该应用程序是一个报亭应用程序,可在后台下载和处理杂志或报纸内容。external-accessory
— 该应用程序与需要通过外部附件框架定期提供更新的硬件附件配合使用。bluetooth-central
— 该应用程序与需要通过核心蓝牙框架定期提供更新的蓝牙配件配合使用。bluetooth-peripheral
——应用通过Core蓝牙框架支持外设模式下的蓝牙通信。
实现此功能时应该如何进行?在iOS中甚至可能吗?
我正在使用 6.0.1 或 6.1 iOS 和 4.6 XCode。
编辑:我首先想到的是报亭内容,但在参考文件的更深处有:
当您的服务器发送推送通知以指示有新问题可用时,系统会检查您的应用程序是否具有带有 newsstand-content 值的 UIBackgroundModes 键。
但我需要 PULL 请求,而不是推送(iPad 必须询问服务器,而不是相反)。