2012-06-29 40 views
8

Tôi đang viết Ứng dụng Mac cần sử dụng dịch vụ CoreLocation. Mã và vị trí hoạt động tốt, miễn là tôi xác thực dịch vụ theo cách thủ công trong ngăn tùy chọn bảo mật. Tuy nhiên, khung công tác không tự động xuất hiện với hộp thoại cho phép. Trạng thái tài liệu:Dịch vụ Vị trí Lõi Mac không yêu cầu quyền

Quan trọng Người dùng có tùy chọn từ chối quyền truy cập của ứng dụng vào dữ liệu dịch vụ vị trí. Trong lần sử dụng đầu tiên của ứng dụng , khung Vị trí cốt lõi nhắc người dùng xác nhận rằng việc sử dụng dịch vụ vị trí có thể chấp nhận được. Nếu người dùng từ chối yêu cầu , đối tượng CLLocationManager báo cáo lỗi thích hợp cho đại biểu của nó trong các yêu cầu trong tương lai.

Tôi gặp lỗi với đại biểu của mình và giá trị của + locationServicesEnabled là đúng trên CLLocationManager. Phần duy nhất bị thiếu là lời nhắc cho người dùng về quyền. Điều này xảy ra trên MPB phát triển của tôi và một người bạn MBP. Không ai trong chúng ta có thể tìm ra sai.

Có ai gặp phải điều này không?

đang liên quan:

_locationManager = [CLLocationManager new];  
[_locationManager setDelegate:self]; 
[_locationManager setDesiredAccuracy:kCLLocationAccuracyKilometer]; 
... 
[_locationManager startUpdatingLocation]; 
+0

Cho chúng tôi biết chi tiết đầy đủ về lỗi khi bắt đầu –

+0

Đây là lỗi chung mà khung CoreLocation cung cấp khi không thể định vị người dùng. 'kCLErrorLocationUnknown' –

+0

Xin bạn có thể cung cấp ID Radar cho báo cáo lỗi tôi sẽ xem nó tại ASAP. –

Trả lời

2

tôi thấy rằng trên Mac, rằng khi bạn khởi động dịch vụ định vị bằng cách gọi

[locationManager startUpdatingLocation]; 

Nó gây nên

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 

Với tình trạng của

kCLAuthorizationStatusNotDetermined 

Nếu bạn xem trạng thái này, sau đó bắt đầu cập nhật lại vị trí, nó sẽ kích hoạt hộp thoại cấp quyền: ví dụ:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 
{ 
    switch (status) { 
     case kCLAuthorizationStatusAuthorized: 
      NSLog(@"Location Services are now Authorised"); 
      [_locationManager startUpdatingLocation]; 

      break; 

     case kCLAuthorizationStatusDenied: 
      NSLog(@"Location Services are now Denied"); 
      break; 

     case kCLAuthorizationStatusNotDetermined: 
      NSLog(@"Location Services are now Not Determined"); 

      // We need to triger the OS to ask the user for permission. 
      [_locationManager startUpdatingLocation]; 
      [_locationManager stopUpdatingLocation]; 

      break; 

     case kCLAuthorizationStatusRestricted: 
      NSLog(@"Location Services are now Restricted"); 
      break; 

     default: 
      break; 
    } 
} 
Các vấn đề liên quan