如果用户明确拒绝此应用程序的授权,或者在“设置”中禁用了位置服务,则会返回“拒绝”状态。我怎么知道它的确切原因?
答案 0 :(得分:5)
我已经完成了这两个功能来检查每个案例
如果用户明确拒绝了您的应用授权,则可以像这样查看
+ (BOOL) isLocationDisableForMyAppOnly
{
if([CLLocationManager locationServicesEnabled] &&
[CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
{
return YES;
}
return NO;
}
如果在“设置”中停用了位置服务,
+ (BOOL) userLocationAvailable {
return [CLLocationManager locationServicesEnabled];
}
我正在使用它,
if([UserLocation userLocationAvailable]) {
//.... Get location.
}
else
{
if([UserLocation isLocationDisableForMyAppOnly]) {
//... Location not available. Denied accessing location.
}
else{
//... Location not available. Enable location services from settings.
}
}
<子> P.S。 UserLocation是一个用于获取用户位置的自定义类。
答案 1 :(得分:3)
<强>夫特:强>
我已经完成了这两个功能来检查每个案例
如果用户明确拒绝了您的应用授权,则可以像这样查看
class func isLocationDisableForMyAppOnly() -> Bool {
if CLLocationManager.locationServicesEnabled() && CLLocationManager.authorizationStatus() == .denied {
return true
}
return false
}
如果在“设置”中停用了位置服务,
class func userLocationAvailable() -> Bool {
return CLLocationManager.locationServicesEnabled()
}
我正在使用它,
if UserLocation.userLocationAvailable() {
//.... Get location.
} else {
if UserLocation.isLocationDisableForMyAppOnly() {
//... Location not available. Denied accessing location.
} else {
//... Location not available. Enable location services from settings.
}
}
<子> P.S。 UserLocation
是用于获取用户位置的自定义类。
答案 2 :(得分:2)
<强>夫特强>
使用:
CLLocationManager.authorizationStatus()
获取授权状态。它是CLAuthorizationStatus
,您可以打开不同的状态&#39;像这样:
let status = CLLocationManager.authorizationStatus()
switch status {
case .authorizedAlways:
<#code#>
case .authorizedWhenInUse:
<#code#>
case .denied:
<#code#>
case .notDetermined:
<#code#>
case .restricted:
<#code#>
}