2013-04-18 61 views
0

我正在嘗試使用CLLocationManage獲取設備當前位置。我設置我的方法來獲取點擊按鈕的位置。我可以成功獲取位置,但當我收到帶有兩個按鈕「不允許」和「Ok」的消息「APPNAME想要使用您當前的位置?」時,我點擊「不允許」。然後,每當我點擊按鈕,我不能再次獲取該alertview來獲取當前位置,所以我無法獲得位置。那麼,當我點擊我的按鈕來獲取位置時,是否有可能每次獲得alertview?每次獲取當前位置的警報

+0

可能的重複[CoreLocation每次都會詢問權限](http://stackoverflow.com/questions/10736735/corelocation-make-asking-permission-everytime) – 2013-04-19 00:11:00

回答

3

當您單擊警報上的「不允許」按鈕時,應用程序的位置權限受到限制。

您可以導航到手機>隱私>位置服務中的設置,在那裏您可以看到服務已關閉。您可以打開它以授予權限

+0

它的工作..非常感謝你:) – user7388 2013-04-18 06:01:03

+0

幸福,你得到它的工作...乾杯:) – 2013-04-18 06:04:59

1

添加此答案,以便您可以更高效地處理該方案。

沒有辦法強迫當前的位置權限再次對話框,但你可以做的是陷阱 其狀態是用戶已經使用CLLocationManagerDelegate拒絕使用你的應用程序的位置,

- (void)locationManager:(CLLocationManager*)aManager didFailWithError:(NSError*)error 
{ 
    switch([error code]) 
    { 
    case kCLErrorDenied: // Location access denied 
    NSLog(@"Sorry, this app needs to access your current location... "); 
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"" message:@"Sorry, this 
    app needs to access your current location. You can navigate to settings in your 
    phone > privacy >location services, over there you can see services are off for you 
    application. You can turn it on to give permissions" 
    delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; 
    //show the alert view 
    [myAlert show]; 
    break; 

    case kCLErrorNetwork: // received n/w error 
    NSLog(@"Network error occurred"); 
    } 
} 
1

選擇的答案是正確的,爲用戶。

不過,如果你是一個程序員,你希望用戶能夠與警示通知,你應該叫

[singleton.locationManager startUpdatingLocation]; 

這將自動彈出時的位置服務被禁用警報每次我覺得你的時間希望。

一個常見的錯誤是檢查位置更新是否已啓用,如果不是,則不要打擾調用startUpdatingLocation。

如果是這種情況,則警報不會顯示出來。