我需要在应用处于后台状态时执行任务。例如,当应用程序进入后台状态时,则每隔5分钟(应用程序在此时间处于后台)执行任务。 我尝试改变位置,但我不能使用精确的位置(电池消耗),然后我使用了显着的位置更改,但如果用户没有移动或没有更改单元塔位置没有更新。
你能帮我解决一下吗?
答案 0 :(得分:0)
Yo可以使用iOS背景提取功能,您可以在其中指定最小背景提取间隔。但是,连续调用代码之间的实际间隔将由iOS框架确定。
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
let data: String? = nil
do {
//fetch some data
if let data = getSomeNewData() {
/* use the completionHandler to talk to the system and tell us if the app fetched new data, or if no data was available. */
completionHandler(.newData)
} else {
completionHandler(.noData)
}
} catch {
print(error)
completionHandler(.failed)
}
}
另见问题:swift-ios-refreshing-app-data-when-in-background
另一种选择是设置一个服务器,该服务器每隔5分钟就会向您的应用发送一个(静音)推送通知,您的应用可以做出反应。