2010-09-30 24 views
12

IOS4 gần đây đã giới thiệu khả năng bật/tắt dịch vụ vị trí cho ứng dụng cụ thể.Tôi làm cách nào để phát hiện dịch vụ vị trí tắt cho ứng dụng của mình?

Tôi cần phát hiện nếu cài đặt này là đã bật/tắt cho ứng dụng MY.

Đầu tiên Tôi đã thử với:

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

tuy nhiên điều này đề cập đến các dịch vụ vị trí toàn cầu và không để các thiết lập ứng dụng cụ thể.

Second Tôi đã cố gắng sử dụng

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

Nó hoạt động nhưng nó được gọi là cả trong trường hợp ứng dụng cài đặt dịch vụ người khuyết tật và các trường hợp khác như thế nào, ví dụ, nếu một biện pháp không cho một số lý do.

Tôi cần mã để phát hiện xem ứng dụng MY có được phép sử dụng dịch vụ vị trí hay không.

Tôi làm cách nào để đạt được điều này?

Cám ơn sự ủng hộ của bạn

Trả lời

24

Từ tài liệu cho locationManager: didFailWithError:

Nếu người dùng từ chối sử dụng ứng dụng của bạn trong những dịch vụ vị trí, phương pháp này báo cáo một lỗi kCLErrorDenied. Khi nhận được lỗi như vậy, bạn sẽ dừng dịch vụ vị trí.

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

Bạn có thể tìm ra mã lỗi khác here.

1

Theo số Apple docs on CLLocationManager, có một thuộc tính được gọi là + (BOOL)locationServicesEnabled nên thực hiện điều đó.

+0

Đó là phương pháp ưa thích trong mắt tôi. Cảm ơn! –

+1

locationServicesEnabled ở cấp thiết bị. authorizationStatus dành cho ứng dụng riêng lẻ. –

10

Tôi thích sử dụng

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

giao tài sản locationServicesEnabled vì nó đề cập đến mức điện thoại, chứ không phải ứng dụng của bạn.

Các vấn đề liên quan