2016-06-22 2 views
0

위치 서비스에서 내 앱에는 사용하지 않음, 항상 사용 중 및 항상 세 가지 옵션이 있습니다. While Using 옵션을 제거하는 것과 같은 옵션을 변경할 수 있습니까?위치 서비스의 옵션 변경

EDIT1 :

- (void)checkAuth { 

    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { 

     if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) { 
      [self.manager requestAlwaysAuthorization]; 

     } else if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedAlways) { 
      [[[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"Setting", nil] show]; 
     } 
    } else { 

     if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) { 
      [self.manager startUpdatingLocation]; 
      [self.manager stopUpdatingLocation]; 

     } else if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized) { 
      [[[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"Setting", nil] show]; 
     } 
    } 
} 

이것은 내가 인증을 요구하는 데 사용하는 코드입니다.

답변

2

내가 나 자신을 발견했다. info.plist에는 위치 서비스 승인을 요청할 때 필요한 몇 가지 옵션이 있습니다. 당신이 필요하지 않은 경우

<key>NSLocationAlwaysUsageDescription</key>  // 'Always' authorization 
    <string>Some message</string> 
<key>NSLocationWhenInUseUsageDescription</key> // 'While in use' authorization 
    <string>Some message</string> 

그들 중 하나를 제거합니다.

0

사용자가 요청한 옵션 만 제공해야합니다 (위치 정보 서비스를 사용하지 않도록 설정할 수 있습니다. 항상 제공되므로 위치 서비스를 사용 중지 할 수 있습니다).

While Using이 표시되면 코드 어딘가에서 [self.locationManager requestWhenInUseAuthorization]을 사용하고있는 것일 수 있습니다. 대신

사용한다 [self.locationManager requestAlwaysAuthorization]

편집 : 당신이 실수로 개발하는 동안, 당신은 완전히 응용 프로그램을 삭제 한 후에만 requestAlwaysAuthorization 등의 요청을 다시 실행할 수 있습니다 모두 위치 권한을 요청 Incase의

위에 표시된. 이렇게하면 기존 권한이 제거되고 사용자에게 다시 프롬프트됩니다.

+1

'requestWhenInUseAuthorization'을 사용하는 곳이 없습니다. –

0

사용 중 옵션을 제거하는 것과 같은 옵션을 변경할 수 있습니까?

SDK 옵션을 제거 하시겠습니까? -> no 취급 중입니까? 에 따라,

[CLLocationManager authorizationStatus] 

그것은 반환해야합니다 : - 당신은 위치 서비스의 현재 상태를 확인하려면> 예

기본적으로, 당신은 이미 상태를 확인하는 것처럼 당신은 사용할 수 있습니다 사과 문서 :

typedef enum { 
    kCLAuthorizationStatusNotDetermined = 0, 
    kCLAuthorizationStatusRestricted, 
    kCLAuthorizationStatusDenied, 
    kCLAuthorizationStatusAuthorized, 
    kCLAuthorizationStatusAuthorizedAlways = kCLAuthorizationStatusAuthorized, 
    kCLAuthorizationStatusAuthorizedWhenInUse 
} CLAuthorizationStatus; 

그 시점부터, 나는 당신이 다른 경우를 다룰 필요가 있다고 생각합니다. 같은 방법으로 항상 및 WhenInUse를 처리하려면 동일한 if에서 OR 조건을 테스트하십시오. 필요한 경우 여기

조금 더 도움 :

http://nshipster.com/core-location-in-ios-8/

+0

나는 그것을 처리 할 수 ​​있지만, 오후에는 "xxx가 백그라운드에서 실행중인 앱을 사용할 때 현재 위치를 사용 중입니다"라는 상단의 배지를보고 싶지 않습니다. 그 배지는 사용자가'WhenInUse' 옵션으로 변경했을 때만 나타납니다. –