티스토리 뷰

Mobile/iOS

[iOS]위치정보 사용 가능 확인

out of coding 2016. 3. 3. 13:52

위치정보를 가져와서 사용할 경우에, 상태를 확인하여야 할 경우가 있다.


* 위치정보 사용하도록 설정에서 껐는지 확인법

if([CLLocationManager locationServicesEnabled]) {

    NSLog(@"위치서비스가 사용 가능함");

}


* 앱에서 사용할 경우에 권한을 받았는지 확인하도록 하는 부분.

CLAuthorizationStatus status = [CLLocationManager authorizationStatus];

switch (status){

case kCLAuthorizationStatusNotDetermined:

// 권한 확인 전

NSLog(@"권한 획득 여부를 확인하지 않았음.");

break;

case kCLAuthorizationStatusRestricted:

// 위치 정보를 사용한다고 말을 하지 않은 앱. 개발자가 프로젝트에 이 앱은 위치 정보를 사용한다고 설정을 해두지 않은 경우이다

NSLog(@"This app is Restricted");

case kCLAuthorizationStatusDenied:

// 권한 획득 안되었을 경우. 설정에서 off를 하였을 경우에도 포함됨.

NSLog(@"NO or truned off location in Settings");

break;

case kCLAuthorizationStatusAuthorizedAlways:

// 7이하 버전 권한 획득시, 8이상 버전 백그라운드에서도 사용 가능

NSLog(@"YES. User autohrized background use.");

break;

case kCLAuthorizationStatusAuthorizedWhenInUse:

// 8이상 버전 앱을 사용중일 경우에만 사용 가능

NSLog(@"YES. User has autohrized use only when the app is in the foreground.");

break;

default:

// 이외의 상황인데, 현재는 나올수가 없는 값일듯... 9.2.1 나온 기준.

NSLog(@"What?");

break;

}


enum 값을 확인하여 보면... 다음과 같다.


typedef enum {

   kCLAuthorizationStatusNotDetermined = 0,

   kCLAuthorizationStatusRestricted,

   kCLAuthorizationStatusDenied,

   kCLAuthorizationStatusAuthorized,

   kCLAuthorizationStatusAuthorizedAlways = kCLAuthorizationStatusAuthorized,

   kCLAuthorizationStatusAuthorizedWhenInUse 

} CLAuthorizationStatus;


kCLAuthorizationStatusAuthorizedAlways, kCLAuthorizationStatusAuthorized 두개의 값은 같게 들어가 있음을 알수 있다.


* 위치정보를 사용하기로 하고선 설정에서 꺼버렸을 경우에, 설정으로 이동하는 방법

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];


쉽다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함