locationManager.requestWhenInUseAuthorization
进行位置服务的 WhenInUse 授权。locationManager.requestAlwaysAuthorization
升级到始终授权。但是,在iOS 11中,用户可以选择使用 WhenInUse - 让我们假设。CLLocationManager.authorizationStatus()
的授权状态是什么,我得到.authorizationWhenInUse
。现在我不知道我之前是否已经要求获得Always权限。locationManager.requestAlwaysAuthorization
没有任何效果
如果我已经向用户询问过这个问题,我怎么知道这个问题
情况?答案 0 :(得分:0)
我也有这种情况,我想知道请求Always授权是否有任何影响,但我找不到任何解决方案(这不包括我的应用程序的UX重新设计),所以最终我使用了用户默认值,如:
// Define a defaults key
fileprivate struct DefaultsKeys {
static let hasAlreadyRequestedAlwaysAuthorization =
"hasAlreadyRequestedAlwaysAuthorization"
}
// Then in later your code
UserDefaults.standard.register(defaults:[DefaultsKeys.hasAlreadyRequestedAlwaysAuthorization: false])
let hasAlreadyRequestedAlwaysAuthorization = UserDefaults.standard.bool(forKey: DefaultsKeys.hasAlreadyRequestedAlwaysAuthorization)
if hasAlreadyRequestedAlwaysAuthorization {
// E.g. show a dialog saying user needs to change it manually in settings etc.
} else {
locationManager.requestAlwaysAuthorization()
UserDefaults.standard.set(true, forKey: DefaultsKeys.hasAlreadyRequestedAlwaysAuthorization)
}