[iOS]iOS8 시뮬레이터에서 GPS 값 받기, CLLocationManager 대응.
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]; //항상
}
requestWhenInUseAuthorization, requestAlwaysAuthorization 둘중 하나를 추가해 줘야 하며,
info.plist에도 해당 속성에 맞게 속성을 추가해 주어야 합니다.
Privacy - Location Usage Description -> 디바이스 환경설정 > 개인 정보 보호 > 위치 > 해당 앱 선택 > 하단 설명글.
NSLocationAlwaysUsageDescription -> 해당 속성일 때 Alert 하단 추가 메시지(쓰지 않아도 무방함)
NSLocationWhenInUseUsageDescription -> 해당 속성일 때 Alert 하단 추가 메시지(쓰지 않아도 무방함)
<info.plist해당 속성을 추가한 후 설정 화면>
<App에서 나오는 Alert 화면>
추가로 시뮬레이터에서 location 값이 계속해서 꺼지거나 켜두고 싶으신 분들은 다음과 같이 하시면 됩니다.
Edit Scheme > "Core Location"의 Allow Location Simulation 체크
이거 때문에 삽질을...