2011-05-06 8 views
7

응용 프로그램에서 위치 서비스를 사용할 때 응용 프로그램이 현재 위치 (허용/허용 안 함)를 사용하려고한다는 경고 메시지가 나타납니다.위치 서비스 iOS 알림 콜백

이 버튼에 대한 대리인 콜백이 있습니까?

"허용 안 함"을 탭하고 싶습니다.

답변

15

해당 경고에 직접 액세스 할 수 없습니다.

사용자가 "허용하지 않음"을 누르거나 앱이 위치 서비스를 사용할 수있는 권한이없는 경우 CLLocationManager은 대표자에게 locationManager:didFailWithError:을 호출합니다. 오류 도메인은 kCLErrorDomain이고 오류 코드는 kCLErrorDenied입니다.

+0

좋은 팁이지만이 콜백 또는 didChangeAuthorizationStatus 콜백을 받기 전에 경고가 표시됩니다. 내가 할 수있는 일이 또 있니? – elsurudo

+0

@elsurudo, 당신은 아마 지금까지 알아 냈을 것입니다. 그러나 기록을 위해, CLLocationManager에서 위치 업데이트를 시작하자마자 Apple은 경고 메시지를 표시합니다. 사용자에게 시각적으로 위치를 요청할 이유를 시스템에 알려주고 싶다면 사용자 고유의 UI를 만들어야하며 사용자가 탭하거나 스 와이프 한 후에야 위치 관리자를 시작해야합니다. 귀하의 UI. – clozach

3

사용자가 위치 관리자를 시작하기 전에 앱에 위치 서비스를 허용했는지 확인해야합니다. 확인하려면 클래스 메소드 locationServicesEnabled을 사용하십시오.

는 여기 문서입니다 :

위치 서비스가 장치에서 활성화되어 있는지 여부를 나타내는 부울 값을 반환

을 locationServicesEnabled.

+ (BOOL)locationServicesEnabled

반환 값 YES 위치 서비스가 활성화 된 경우 또는 NO 그들은하지 않은 경우.

토론 사용자는 설정> 일반> 위치 서비스에서 스위치를 전환하여 설정 응용 프로그램에서 위치 서비스를 모두 사용하거나 사용하지 않도록 설정할 수 있습니다.

사용자가 현재 장치에 대해 위치 서비스를 사용할 수 있는지 확인하기 위해 위치 업데이트를 시작하기 전에이 메서드의 반환 값을 확인해야합니다. 이 메소드가 NO를 반환하고 위치 업데이트를 시작하면 Core Location 프레임 워크는 사용자에게 위치 서비스를 다시 활성화해야하는지 묻는 확인 패널을 표시합니다.

+0

이것은 위치 서비스가 켜져 있는지 또는 꺼져 있는지를 결정하므로 사용자가 위치 서비스를 사용하도록 설정할 수 있으므로 앱에는 특별히 사용하지 않도록 설정하면 다소 위험합니다. – RickiG

+0

전혀 위험하지 않습니다. 실제로 Apple은 위치 관리자를 시작하기 전에 위치 서비스가 활성화되어 있는지 확인하는 것을 권장합니다 (문서에서 LocateMe의 샘플 코드를보십시오). 이것이 제일 먼저 확인해야 할 사항입니다. 또한 위임자에서 kCLErrorDenied를 확인해야합니다. –

+0

나는 조금 애매했다, 미안. 나는 사용자가 위치 서비스를 일반적으로 켜 놓을 수 있지만 앱을 위해 해제 할 수 있기 때문에 [CLLocationManager locationServicesEnabled]에만 의존하지 않을 것이라는 경고였습니다. – RickiG

6

는 당신은 단순히 조치는 아래와 같이 선택받을 수 있습니다

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) { 
     [self addRegion]; 
    } 
    else if (status == kCLAuthorizationStatusDenied) { 
     NSLog(@"Location access denied"); 
    } 
} 

위치 관리자의 대리자를 설정해야합니다.

+2

감사 의장 솔루션 .. –