如何允许应用程序在后台运行时运行更长时间



我有一个 Swift 程序,它根据特定条件获取用户位置并将位置保存到本地数据库。

应用程序还可以在后台状态上运行。由于我需要获得非常准确的位置,因此最多可能需要 60 秒才能获得位置。如果在不到 5 秒的时间内确定位置,则当应用程序在后台运行时一切正常。如果获取位置需要超过 5 秒,则不会发生任何事情。我认为原因是因为您只有几秒钟来完成后台任务。

那么是否可以请求长达 60 秒的后台任务运行?我是否需要添加任何特殊代码来告诉操作系统请允许更多时间(最多 60 秒)来完成后台任务?

是的。

使用 UIApplication 函数beginBackgroundTaskWithExpirationHandler: 。在最新版本的iOS中,这给了你3分钟来完成你正在做的任何事情。有关更多信息,请参阅 Xcode 文档。

您可以使用

"beginBackgroundTaskWithExpirationHandler"

示例代码可以是这样的:

var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid
    func registerBackgroundTask() {
  backgroundTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler {
    [unowned self] in
    self.endBackgroundTask()
  }
  assert(backgroundTask != UIBackgroundTaskInvalid)
}
func endBackgroundTask() {
  NSLog("Background task ended.")
  UIApplication.sharedApplication().endBackgroundTask(backgroundTask)
  backgroundTask = UIBackgroundTaskInvalid
}
有关

这方面的更多信息可以在本教程中找到有关背景模式的信息:Raywenderlich:背景模式 - Swift
苹果文档:背景模式

在后台运行应用程序并始终打开的最佳方法是保持启用 xcode 提供的后台模式

请参考 : https://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial

还要在应用程序的 info.plist 中设置 Bool"应用程序不在后台运行"

希望这会有所帮助

谢谢

相关内容

最新更新