2010-09-30 60 views
12

IOS4最近推出的可能性爲啓用/禁用位置服務爲特定應用程序。如何檢測我的應用程序的位置服務禁用?

我需要檢測此設置是否爲啓用/禁用我的應用程序。

首先我曾嘗試用:

if ([CLLocationManager locationServicesEnabled]) 
    { 
     .... 
    } 

然而,這指的是全球定位服務,而不是特定的應用程序設置。

我曾嘗試使用

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{ 
    ... 
} 

它的工作原理,但它被稱爲無論是在服務應用程序的情況下,設置殘疾人和在其他情況下,像,例如,如果一項措施對一些失敗原因。

我需要一個代碼來檢測是否允許MY應用程序使用位置服務。

我該如何做到這一點?

感謝您的支持

回答

24

從文檔locationManager: didFailWithError:

如果用戶拒絕應用程序的 使用位置服務的,這 方法報告一個kCLErrorDenied錯誤。 一旦收到此類錯誤,您應該停止位置服務 。

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 
    if ([[error domain] isEqualToString: kCLErrorDomain] && [error code] == kCLErrorDenied) { 
     // The user denied your app access to location information. 
    } 
} 

您可以找到其他錯誤代碼here

1

根據Apple docs on CLLocationManager,有一個名爲+ (BOOL)locationServicesEnabled屬性應該做到這一點。

+0

這是我眼中首選的方法。謝謝! – 2013-01-31 13:49:16

+1

locationServicesEnabled位於設備級別。 authorizationStatus適用於單個應用程序。 – 2014-06-30 16:06:45

10

我更喜歡使用

-(BOOL)locationAuthorized { 
    return ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized); 
} 

在locationServicesEnabled財產,因爲它指的是手機的水平,而不是你的應用程序。

相關問題