我在使用 iOS11 时向用户请求位置权限时遇到问题,我的 info.plist 包含
<key>NSLocationWhenInUseUsageDescription</key>
<string>When in use permissions</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>always permissions</string>
<key>NSLocationAlwaysAndWhenInUsageDescription</key>
<string>Always and in usage permissions</string>
我有两张地图,一张给客户,一张给员工。对于员工我需要知道他们的位置,即使应用程序没有运行或后台运行(他们可以在退出时将其关闭)并使用请求权限
locationManager.requestAlwaysAuthorization()
对于客户,我只需要在应用程序使用时的位置并使用请求权限
locationManager.requestWhenInUseAuthorization()
在 iOS 11 中,这仅在使用时请求权限,而不是始终开启权限。
在 iOS 10 中,它具有正确的行为。
我想要的行为如下:当他们是客户(未登录)时,它只要求何时使用许可。如果他们登录(员工),即使不使用它也会请求位置。
如果有人能阐明我错过/做错了什么,将不胜感激。
如果我删除权限NSLocationAlwaysUsageDescription
iOS10 和 iOS11 有相同的问题,即不总是请求权限,请注意一些事项。
再澄清一点。我已经实现了 didChangeAuthorization 委托函数,当用户允许调用警报权限时调用它,requestWhenInUseAuthorization()
但是当我requestWhenInUseAuthorization()
在位置管理器上调用函数时,未调用委托方法,就像它从未接收到该调用并且没有向用户。