iOS:通过位置更新在后台运行应用

时间:2018-11-15 09:28:36

标签: ios iphone swift uibackgroundtask uibackgroundmode

我打算开发一个iOS应用程序,该应用程序可用于围栏进入/退出事件。

我需要在应用程序在后台运行或被操作系统调用大约5分钟时运行我的应用程序。就像收到事件监控通知时一样。

我已通过位置更新启用了后台执行,并在需要时运行后台任务以继续在后台执行。

问题是应用程序只能运行180秒左右,并且后台任务会自动终止。我尝试在完成后重新启动后台任务,但没有成功,并且3分钟后应用程序执行停止。

func keepAlive() {
     backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
         UIApplication.shared.endBackgroundTask(self!.backgroundTask)
         self?.backgroundTask = UIBackgroundTaskInvalid
         self?.keepAlive()
      }
}

是否可以将应用程序运行180秒以上?我正在使用iOS 11和12进行测试。

编辑: 我尝试在后台任务完成时重新调用keepAlive函数,但是第二次后台执行时间没有增加并且应用终止了。

1 个答案:

答案 0 :(得分:0)

已经有一种官方的方法来执行此操作:只需使用Always-Authorized。有了它,您可以在特殊时期检查用户位置。