如果启用了位置服务,我测试了我的设备(iPod Touch 2G iOS 4.1)
permitted = [locationManager locationServicesEnabled];
我总是得到YES,无论是否启用了位置服务。我说的是位置服务的常规按钮,而不是应用程序特定的按钮。在iOS 3.2.2的iPad上,一切正常。
答案 0 :(得分:35)
请注意[locationManager locationServicesEnabled]
为deprecated since iOS 4.0。
请改用类方法[CLLocationManager locationServicesEnabled]
。
The App Specific Button can be retrieved by
[CLLocationManager authorizationStatus]
答案 1 :(得分:8)
使用时
[CLLocationManager locationServicesEnabled]
然后检查是否在整个系统中启用了locationServices。所以当你去设置 - >位置服务,你看到第一个开关。该方法返回该状态的状态,与您的应用程序无关。
如果您需要知道您的应用是否可以访问位置服务,请使用@Pascalius answer。
答案 2 :(得分:4)
实现位置管理器的委托时,您应该实现didFailWithError。如果用户不允许访问位置
,那么您将收到相应的错误 <强> Apple Documentation States: 强>
如果用户拒绝您的应用程序使用位置服务,则此方法会报告kCLErrorDenied
错误。收到此类错误后,您应该停止位置服务。
答案 3 :(得分:2)
Swift 3.1函数返回 - &gt; status:Bool和message:String
func isLocationEnabled() -> (status: Bool, message: String) {
if CLLocationManager.locationServicesEnabled() {
switch(CLLocationManager.authorizationStatus()) {
case .notDetermined, .restricted, .denied:
return (false,"No access")
case .authorizedAlways, .authorizedWhenInUse:
return(true,"Access")
}
} else {
return(false,"Turn On Location Services to Allow App to Determine Your Location")
}
}
答案 4 :(得分:1)
if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse && [CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedAlways))
{
; // app doesn't have access to localization to whatever you want
}
答案 5 :(得分:0)
[CLLocationManager locationServicesEnabled]将返回NO,然后我才获得NO。