iOS 中长时间运行的后台任务



在我的Android应用程序中,我正在使用后台服务,该服务每2分钟检查一次本地数据库,如果发现一些未同步的数据,它会尝试将其同步到服务器。现在我想在ios中实现相同的功能,所以我想知道ios中是否有与android服务相当的东西。

不,没有 iOS 等效的服务。但是,您尝试执行的操作可以通过背景模式实现。具体来说,fetch后台模式。

要启用后台模式,请转到项目设置 ->功能 ->后台模式并启用Background fetch

那么,你的UIApplicationDelegate实现功能吗

// Swift
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)  
// Objective-C
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;

根据背景模式文档

当出现好机会时,系统会在后台唤醒或启动应用,并调用应用委托的应用程序:performFetchWithCompletionHandler: 方法。使用该方法检查新内容,并在内容可用时启动下载操作。下载完新内容后,必须执行提供的完成处理程序块,并传递指示内容是否可用的结果。执行此块会告知系统,它可以将应用移回挂起状态并评估其电源使用情况。与需要很长时间下载内容或声称内容可用但随后未下载任何内容的应用相比,快速下载少量内容并准确反映何时有可供下载内容的应用更有可能在未来获得执行时间。

使用后台模式,您的应用将被唤醒或启动以执行任务,即使它被终止或设备重新启动 - 用户强制退出应用除外。

最新更新