您可以使用本地通知。当用户打开显示的通知时,它们会执行代码。您可以将本地通知设置为以指定的时间间隔(例如每天、每小时、每周等)重复。这仍然需要用户打开应用程序才能开始该过程。
UILocalNotification 类参考
一旦委托方法触发,您只有几秒钟的时间来执行代码。注册一个长时间运行的后台任务,然后下载你需要做的任何事情。如果它不能在你为任务获得的 10 分钟内完成下载,那么你需要重新考虑你的下载策略。
Apple 多任务处理和后台处理
我们在我工作的 iOS 应用程序上使用了相同的概念,因此如果您设置正确,这将起作用。
更新
对于那些好奇这将如何工作的人,您只需要实现 UILocalNotification 委托方法。它们继承自应该已经存在的 UIApplicationDelegate。
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
// start your long running bg task here and update your file
}
** 更新 2 **
Martin H 的回答是迄今为止最正确的。但这引出了一个问题,如果用户从不打开应用程序,那么下载他们永远不会看到的数据有什么意义呢?提醒他们打开应用程序和更新的重复本地通知可能是最好的方式,但如果用户希望它保持最新和最新,仍然需要用户与您的应用程序进行交互。