ios - 后台任务 swift 3.0 iOS

标签 ios swift background location

我需要在应用程序处于后台状态时执行任务。例如,当应用程序进入后台状态时,则每 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/

相关文章:

ios - 如何在完成之前中断 UIView 动画?

ios - 如何将 uiview 分成两个 triangleview 并快速点击这两个 trainge

android - 在选定的 ListView 上设置背景?

ios - 在 iOS 中播放准备好的动画

swift - 如何在 UITableVIew 的不同单元格中使用 UITextView 获取用户输入

android - Bug 录制视频 android

html - 为站点实现非对称背景图像

ios - 如何根据屏幕尺寸快速调整元素大小

ios - 不使用 PFQueryTableView 时,从 Parse 加载到 UITableViewController 的数据不均匀

ios - 如何从 UITableView 中的 UITableViewCells 中的 UITextFields 中获取文本并将它们放入数组中(Swift 3)?