Swift 检查是否已询问有关位置服务授权的信息 我通过locationManager向用户请求位置服务的WhenUse授权。请求WhenUseAuthorization 然后,稍后在我的应用程序中,我要求升级到始终使用locationManager.requestAlwaysAuthorization进行授权。然而,在iOS 11中,用户可以选择继续使用WhenInUse——让我们假设一下 假设用户再次打开应用程序,我想显示一个对话框,上面写着“如果您希望应用程序在后台工作,请更改位置服务设置” 然后,我用CLLocationManager.authorizationStatus()检查什么是授权状态,我在使用时得到.authorization。现在我不知道我以前是否已经请求过Always权限 locationManager.requestAlwaysAuthorization不会有任何效果 如果我已经问过用户,我怎么知道这是 案子
我也有过这样的情况,我想知道请求总是授权是否有任何效果,但我找不到任何解决方案(这不包括对我的应用程序进行UX重新设计),所以最终我选择了用户默认设置,如:Swift 检查是否已询问有关位置服务授权的信息 我通过locationManager向用户请求位置服务的WhenUse授权。请求WhenUseAuthorization 然后,稍后在我的应用程序中,我要求升级到始终使用locationManager.requestAlwaysAuthorization进行授权。然而,在iOS 11中,用户可以选择继续使用WhenInUse——让我们假设一下 假设用户再次打开应用程序,我想显示一个对话框,上面写着“如果您希望应用程序在后台工作,请更改位置服务设置” 然后,我用CLLocationManager.authorizationStatus()检查什么是授权状态,我在使用时得到.authorization。现在我不知道我以前是否已经请求过Always权限 locationManager.requestAlwaysAuthorization不会有任何效果 如果我已经问过用户,我怎么知道这是 案子,swift,core-location,ios11,Swift,Core Location,Ios11,我也有过这样的情况,我想知道请求总是授权是否有任何效果,但我找不到任何解决方案(这不包括对我的应用程序进行UX重新设计),所以最终我选择了用户默认设置,如: // Define a defaults key fileprivate struct DefaultsKeys { static let hasAlreadyRequestedAlwaysAuthorization = "hasAlreadyRequestedAlwaysAuthorization" } //
// 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)
}
我也有过这样的情况,我想知道请求总是授权是否有任何效果,但我找不到任何解决方案(这不包括对我的应用程序进行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)
}