2012-12-20 2 views
1

[CLLocationManager locationServicesEnabled] 기능을 사용하여 위치 서비스 사용 여부를 알 수 있습니다. 나는 viewDidLoad 방법으로 코드를 보관했다.CLLocationManager가 항상 true를 반환하는 이유는 무엇입니까?

if(![CLLocationManager locationServicesEnabled]) 
{ 
    NSLog(@"No"); 
} 
else 
{ 
    NSLog(@"Yes"); 
} 

이 앱을 처음 실행하면 Yes이 반환됩니다. 왜? 나에게 No을 돌려 주어야합니다. "허용"또는 "허용하지 않음"옵션을 선택하지 않은 경우입니다. 내가 허락하지 않거나 허용하지 않는 수단은 viewDidLoad입니다. Yes이 있습니다.

이제 "허용하지 않음"을 선택하고 다시 viewController을로드합니다. 이 시점에서 최소한 No을 반환해야하지만 여전히 나는 Yes을 얻었습니다. 왜?

상당 부분의 혼동으로 CLLocationManager입니다.

아이디어가 있으십니까?

+2

@ Krishnabhadra의 대답이 정확합니다.이 방법은 * 장치 *의 일반적인 위치 서비스에 대해서만 알려줍니다. * 귀하의 응용 프로그램 *이 응용 프로그램을 사용할 수 있는지 여부를 알고 싶다면'authorizationStatus'를 사용해야합니다 : https://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager .html # // apple_ref/occ/clm/CLLocationManager/authorizationStatus – psycho

답변

5

locationServicesEnabled 반환이 설정을 사용할 수 있으면 위치 서비스 .. 설정에 사용할 수 있는지 여부,이 기능이 documentation

에서 YES 모든 시간 ..

을 반환은

을 locationServicesEnabled 장치에서 위치 서비스가 활성화되었는지 여부를 나타내는 부울 값을 반환합니다.

토론

사용자가 사용하거나 위치 서비스는 일반 스위치 전환으로 설정 응용 프로그램에서 사용하지 않도록 위치 서비스 할 수 있습니다.

위치 업데이트를 시작하기 전에이 메서드의 반환 값을 확인하여 사용자에게 현재 장치에 대해 위치 서비스가 사용되는지 확인해야합니다. 이 메소드가 NO를 반환하고 어쨌든 위치 업데이트를 시작하면 코어 위치 프레임 워크는 사용자에게 위치 서비스를 다시 활성화해야하는지 확인하도록 요청합니다.

(경고보기의) 사용자 허용/거부 앱 권한이이 메소드의 반환 값에 영향을 미치지 않는지 여부.

사용자가 위치에 액세스 할 수있는 응용 프로그램 권한을 부여했는지 여부를 확인하려면 authorizationStatus을 사용할 수 있습니다.

관련 문제