我需要在应用程序处于后台状态时执行任务。例如,当应用程序进入后台状态时,则每 5 分钟(此时应用程序处于后台)执行一个任务。 我尝试更改位置,但无法使用精确位置(用于电池消耗),然后我使用了重大位置更改,但如果用户不移动或不更改手机信号塔位置,则不会更新。
你能帮我解决这个问题吗?
最佳答案
您可以使用 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 分钟向您的应用发送一条(静默)推送通知,您的应用可以对此使用react。
关于ios - 后台任务 swift 3.0 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369614/