第一次在这里发帖,所以请原谅我,如果我用一个简单的答案问一个问题,但我似乎无法找到与我的案例相关的任何内容。
我正试图在应用程序生命周期的几乎所有阶段无限期地在iOS应用程序上运行位置服务。用户在应用程序内部有一个选项,用于激活某个启动位置服务的功能,期望这些服务必须在应用程序终止时运行。
我在这里遇到的问题是,当我手动终止应用程序时,它就会停止工作。
这是我到目前为止所做的:
- 在功能(
中添加了背景模式location
)- 添加了
Application does not run in background mode
并将其设置为Info.plist中的NO
。还添加了NSLocationAlwaysUsageDescription
和NSLocationWhenInUsageDescription
。- 初始化
CLLocationManager
时,我设置了以下内容:desiredAccuracy
至kCLLocationAccuracyBestForNavigation
;distanceFilter
至kCLDistanceFilterNone
;activityType
来CLActivityTypeFitness
;pausesLocationUpdatesAutomatically
至NO
;allowsBackgroundLocationUpdates
至YES
;并打电话requestAlwaysAuthorization
。- 尝试在应用代理中对
醇>applicationWillTerminate:
方法启动重要或区域监控。
所以,我知道我在第4点所做的事情应该会在检测到更改后重新启动应用程序。至少我已经成功地处理了重大变化而不是区域监控。但是,它不会立即起作用。我发现它立即工作的唯一方法是停用/激活飞行模式,或关闭和打开设备。
终止应用后,有没有办法让这项工作(差不多)立即生效?我想在这里实现的是在用户终止应用程序后立即重新启动应用程序,以便应用程序可以继续执行它对位置服务所需的任何操作。提交到应用程序商店会有什么影响吗?
我已经看到了一些关于使用后台任务来实现这一目标的事情,这可能是要走的路吗?
感谢。