2015-01-27 2 views
2

앱이있어서 위치 기반 기능을 추가하고 싶습니다. iOS 7과 8을 모두 지원하지만 몇 가지 문제가 있습니다.iOS7 및 iOS 8 위치 서비스

사용자가 특정 viewController에서 특정 버튼을 탭한 경우에만 위치 권한을 요청하고 싶습니다. 문제는 앱이 실행되는 즉시 권한 요청이 표시된다는 것입니다. 더 정확히 말하면 첫 번째 viewController의 ViewWillAppear 및 ViewDidAppear 함수 사이입니다.

내가 이전에 시도하는 것 :

  1. (iOS8의 경우) PLIST에 NSLocationWhenInUseUsageDescription 키를 가진

    . 코드의 관점에서 :

    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    self.locationManager.delegate = self; 
    if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 
        [self.locationManager requestWhenInUseAuthorization]; 
    } 
    [self.locationManager startUpdatingLocation]; 
    
  2. PLIST 키를 제거는 ->이 더 이상 표시하지 iOS8의에서 팝업을 발생,하지만 여전히 순간 하나 하나에게에서 iOS7에

에서와 CoreLocation과 관련된 코드 비트가 주석 처리되었으며 여전히 대화에 권한 (iOS7 만 해당)을 묻는 메시지가 표시됩니다.

다른 어떤 시도를 할 수 있을지 모르겠으므로 어떤 도움도 많이 받으실 수 있습니다.

+1

사용자가 원하는 단추를 누를 때까지 CLLocationManager 코드를 수행하지 마십시오. –

답변

1

좋아, 문제가 발견되었습니다. 앱이 열리 자마자 타사 앱이 권한을 요청하고있는 것으로 나타났습니다. 모든 해답을 가져 주셔서 감사합니다.

+0

어떤 제 3자가 위치를 요청했는지 어떻게 알 수 있습니까? – leviathan

1

iOS 7 (및 이전 버전)의 작동 방식입니다. 권한 부여 대화 상자를 담당하지 않습니다. 시스템이 있습니다. 당신은 그것을 나타낼 수 없습니다; 당신이 코어 위치를 사용하고 있다는 것을 본 시스템은 당신을 대신하여 그것을 제시합니다. 그것이 바로 iOS 8이 변경하는 것과 같습니다. iOS 7에서 수행 할 수있는 작업은 위치 서비스가 사용 설정되어 있는지 여부와 앱의 승인 여부입니다.