当我使用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() 函数时,委托方法没有被调用,就像它从未接收到该调用一样,用户也不会看到任何警告对话框。