티스토리 뷰

반응형


iOS8 버전부터 CLLocationManager 대응하는 방법이 달라졌습니다.

locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

//iOS8 대응
if([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
{
    [locationManager requestWhenInUseAuthorization];   //앱을 사용하는 동안
    //[locationManager requestAlwaysAuthorization];      //항상
}


requestWhenInUseAuthorizationrequestAlwaysAuthorization 둘중 하나를 추가해 줘야 하며,

info.plist에도 해당 속성에 맞게 속성을 추가해 주어야 합니다.



Privacy - Location Usage Description -> 디바이스 환경설정 > 개인 정보 보호 > 위치 > 해당 앱 선택 > 하단 설명글. 

NSLocationAlwaysUsageDescription -> 해당 속성일 때 Alert 하단 추가 메시지(쓰지 않아도 무방함)

NSLocationWhenInUseUsageDescription -> 해당 속성일 때 Alert 하단 추가 메시지(쓰지 않아도 무방함)


<info.plist해당 속성을 추가한 후 설정 화면>


<App에서 나오는 Alert 화면>



추가로 시뮬레이터에서 location 값이 계속해서 꺼지거나 켜두고 싶으신 분들은 다음과 같이 하시면 됩니다.

Edit Scheme > "Core Location"의 Allow Location Simulation 체크


이거 때문에 삽질을...


반응형
댓글
반응형