2010-02-25 31 views
17

Tôi chưa nghĩ đến điều này.Cách xử lý "Không cho phép" đối với người quản lý vị trí?

Đến bây giờ bất cứ khi nào thiết bị yêu cầu tôi sử dụng cập nhật vị trí tôi đã cho phép.

Nhưng khi bây giờ tôi không cho phép thì trình quản lý vị trí cho tôi kclErrorDenied và người quản lý vị trí không thể khởi động lại cho đến khi tôi khởi động lại ứng dụng.

Vì vậy, câu hỏi của tôi là tôi nên đưa ra một thông báo để khởi động lại ứng dụng cho người dùng hoặc có giải pháp để bắt đầu lại làm việc với người quản lý vị trí.

cảm ơn.

The Error : 
ERROR,Time,288787555.078,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",server did not accept client registration 1 
WARNING,Time,288787555.108,Function,"void CLClientHandleDaemonInvalidation(__CFMessagePort*, void*)",client 1308.0 has been disconnected from daemon 
locationManager:didFailWithError:] [Line 244] Error Denied :Error Domain=kCLErrorDomain Code=1 "Operation could not be completed. (kCLErrorDomain error 1.)" 

Trả lời

36

Triển khai - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error.

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 
    NSMutableString *errorString = [[[NSMutableString alloc] init] autorelease]; 

    if ([error domain] == kCLErrorDomain) { 

     // We handle CoreLocation-related errors here 
    switch ([error code]) { 
     // "Don't Allow" on two successive app launches is the same as saying "never allow". The user 
     // can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings. 
     case kCLErrorDenied: 
      //... 
      break; 
     case kCLErrorLocationUnknown: 
      //... 
      break; 
     default: 
      //... 
      break; 
     } 
    } else { 
     // We handle all non-CoreLocation errors here 
    } 
} 
+0

vì vậy hệ điều hành sẽ hỏi hai lần này và nếu chúng tôi không cho phép cả khi chúng tôi phải khởi động lại ứng dụng, phải không? – harshalb

+1

Có, nếu ứng dụng hoàn toàn cần vị trí hiện tại. – willi

+5

Không ... @willi không chính xác. Ứng dụng sẽ hỏi một lần. Lần đầu tiên. Bạn không thể khởi tạo yêu cầu thứ hai cho phép. Apple yêu cầu bạn cho người dùng biết (khi họ nhấp vào Không cho phép) rằng chương trình của bạn sẽ không hoạt động mà không có Vị trí địa lý. Nếu cần, hãy yêu cầu người dùng khởi chạy lại ứng dụng. Nếu ứng dụng của bạn có thể làm việc mà không có nó, hãy tiếp tục và tiếp tục ứng dụng. Bất kể, bạn phải cho người dùng biết hoặc Apple sẽ không phê duyệt ứng dụng của bạn. ps: Họ * làm * kiểm tra điều này ... để làm điều đó đúng. – Jann

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