ios中长时间运行的后台任务
问题描述:
在我的android应用中,我使用了一个后台服务,每2分钟在本地数据库中检查一次,如果发现某些未尝试过的数据,它会尝试将其同步到服务器。现在我想在ios中实现相同的功能,所以我想知道ios中是否存在与android服务相同的内容。ios中长时间运行的后台任务
答
不,没有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;
按
Background Modes documentation当一个好机会出现的时候,系统唤醒或启动您的应用为背景,并调用应用程序委托的应用程序: performFetchWithCompletionHandler:方法。如果内容可用,请使用该方法检查新内容并启动下载操作。一旦完成下载新内容,您必须执行提供的完成处理程序块,并传递一个结果,指示内容是否可用。执行此块会告诉系统它可以将您的应用程序移回挂起状态并评估其用电量。快速下载少量内容并准确反映他们何时可以下载内容的应用程序比将需要很长时间下载内容的应用程序或声明内容可用但后来可以执行的应用程序更有可能在未来获得执行时间不下载任何东西。
使用背景模式,您的应用程序将被唤醒或启动来执行任务,即使它被打死或设备被重新启动 - 与用户强制退出应用程序异常。
感谢您的回应,我会研究实施。 – Danger