0

我打算开发一个适用于地理围栏进入/退出事件的 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在后台任务完成时调用功能,但是第二次后台执行时间没有增加并且应用程序终止。

4

1 回答 1

0

已经有一种官方方法可以做到这一点:只需使用Always-Authorized。有了它,您可以在特殊时期检查用户位置。

于 2018-11-15T09:53:41.577 回答