2011-09-03 5 views
1

장치 (Iphone 4, IOS 4.2.1)에서 테스트 할 때 MapKit/CLLocationManager를 사용할 때 위치 설정을 사용하도록 사용자에게 묻는 표준 대화 상자가 있습니다 , 해당 설정으로 이동하는 버튼을 제안하십시오.iPhone - "위치를 사용할 수 있어야 함"대화 상자 표시

"확인"을 클릭하면이 대화 상자가 다시 나타나지 않습니다.

사용자가 대화 상자를 통해 올바른 설정보기로 이동할 수 있도록 프로그래밍 방식으로 다시 표시하려면 어떻게해야합니까?

답변

7

음, 위치 서비스를 사용하여 앱을 허용하도록 사용자에게 묻는 표준 대화 상자를 프로그래밍 방식으로 불러 올 수 없습니다. 그것은 모두 IOS에 의해 완료됩니다.

그러나 CLLocationManager 인스턴스의 startUpdatingLocation 방법을 통해 언제든지 위치 업데이트를 시작할 수 있습니다. 위치 서비스가 사용 중지 된 경우 위임자가 오류 상태에 대한 알림을 받으면 사용자에게 설정으로 이동하여 앱의 위치 서비스를 사용하도록 묻는 대화 상자를 표시 할 수 있습니다. 아래 필터링 코드 kCLErrorDenied을 참조하십시오.

#pragma mark - CLLocationManagerDelegate 
- (void)locationManager:(CLLocationManager *)inManager didFailWithError:(NSError *)inError{ 
    if (inError.code == kCLErrorDenied) { 
     NSLog(@"Location manager denied access - kCLErrorDenied"); 
     // your code to show UIAlertView telling user to re-enable location services 
     // for your app so they can benefit from extra functionality offered by app 
    } 
} 

애플리케이션에서 URL 스키마를 통해 설정 앱을 시작할 수 없습니다.

UPDATE

: iOS5.1부터, 당신은 하지는 다음과 같은 방법을 사용할 수 있습니다.

UPDATE

: iOS5를 시작, 당신은 당신의 응용 프로그램에서 설정을 시작할 수 있습니다 :

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]]; 
관련 문제