我正在编写一个跟踪用户位置的导航应用程序。
为了继续显示有关路线的通知(当手机锁定、接听电话等时) - 我还需要在应用程序处于后台时继续跟踪位置:(Capabilities>Background Modes>Location updates, locationManager.allowsBackgroundLocationUpdates = true)
我已经为这个问题苦苦挣扎了很长一段时间,并阅读了很多相关内容,但找不到我正在寻找的答案。
我已经实现了这两个选项:
选项 1 - 在使用时请求
(locationManager.requestWhenInUseAuthorization()
):
每当应用程序位于后台时,每个应用程序顶部都会有一个额外的蓝色位置警报栏。
- 有没有办法删除这个横幅?或者只能在很短的时间内获得它?再次-我
不能用
locationManager.stopUpdatingLocation()
- 因为我需要
他们在后台。
选项 2 - 始终请求 (locationManager.requestAlwaysAuthorization()
):
一段时间后,我的用户收到后台位置可怕的提示消息。例子:
“APP”一直在后台使用您的位置。你想要_____吗
继续允许这样做吗?
- 有没有办法删除这条消息? (以位智为例 - 相同
权限,但我很确定我从未收到过这样的消息)
- 我可以停止在后台获取位置更新吗仅当
应用程序被终止?并避免应用程序被唤醒(我实际上不想要这些位置)?我尝试使用
locationManager.stopUpdatingLocation()
终止应用程序时 - 开启applicationWillTerminate(_ application: UIApplication)
看来这两种情况不仅是糟糕的用户体验,会阻碍用户,而且在其他基于位置的应用程序中也很罕见。
我不知道我在这里错过了什么。
您提到的两种机制都是操作系统为了保护用户而设置的。它们不仅提醒用户后台有应用程序正在检索其位置,而且还提醒用户某些不再需要时可能会消耗电池。
没有办法避免这种情况,因此您应该根据应用程序的需要来决定哪一个最适合。
例如,某些应用程序提供有关路线的指示,这些应用程序往往在顶部有蓝色横幅(请参阅谷歌地图 https://itunes.apple.com/us甚至苹果地图)。
另一方面,其他一些应用程序有兴趣随时获取位置更新(例如健身应用程序或跟踪您所有运动的应用程序,请参阅Moves https://itunes.apple.com/gb/app/moves/id509204969?mt=8)。在这种情况下,用户将收到一次关于此应用程序在后台持续使用其位置的事实的警告,如果他们接受,则不会再次受到打扰(iOS 8 及更高版本)。
以下是 Apple 工作人员提供的有关选项 2 的一些信息:
在应用程序获得“始终”授权并开始在后台使用位置服务几天后,系统将要求用户再次确认他们仍然希望该应用程序在后台跟踪他们的位置。
如果应用程序在后台获取用户的位置,则开发人员无法采取任何措施来避免此确认。
来源:苹果论坛 https://forums.developer.apple.com/thread/48092
来源:关于 iOS 8 及更高版本中的隐私和位置服务 https://support.apple.com/en-us/HT203033
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)