【发布时间】:2017-09-16 19:17:45
【问题描述】:
我正在编写一个跟踪用户位置的导航应用程序。
为了继续显示有关路线的通知(当手机被锁定时,接听电话等) - 我还需要在应用程序处于后台时继续跟踪位置:(Capabilities>Background Modes>Location updates, locationManager.allowsBackgroundLocationUpdates = true)
我已经为这个问题苦苦挣扎了很长时间,并且阅读了很多关于它的内容,但找不到我正在寻找的答案。 我已经实现了这两个选项:
选项 1 - 使用中的请求
(locationManager.requestWhenInUseAuthorization()):
每当应用程序处于后台时,每个应用程序顶部都会有一个额外的蓝色位置警报栏。
- 有没有办法删除这个横幅?还是只在很短的时间内得到它?再次 - 我
不能使用
locationManager.stopUpdatingLocation()- 因为我需要 他们在后台。
选项 2 - 始终请求 (locationManager.requestAlwaysAuthorization()):
一段时间后,我的用户收到后台位置可怕的提示消息。示例:
“APP”一直在后台使用您的位置。你想要_____吗 继续允许吗?
- 有没有办法删除这条消息? (以 Waze 为例 - 相同 权限,但我很确定我从来没有收到过这样的消息)
- 我可以停止在后台获取位置更新只有当
应用程序被终止?并避免应用程序被唤醒(我实际上不想要这些位置)?我试着用
locationManager.stopUpdatingLocation()终止应用程序时 - 开启applicationWillTerminate(_ application: UIApplication)
似乎这两者不仅是糟糕的用户体验,会阻碍用户,而且在其他基于位置的应用中也非常少见。
我无法弄清楚我在这里缺少什么。
【问题讨论】:
-
没有办法。
-
使用只被提醒一次后台位置使用。您可能只是不记得何时收到 waze 的提示。
标签: ios swift location core-location