2017-12-04 10 views
0

iPhone의 최신 iOS 버전의 경우 iPhone에서 항상 내 위치를 추적하기위한 '항상'을 얻지 못합니다. 나는 애플 리케이션에있는 동안 절대 갈 수 없어. 그러나이 기능은 모든 버전 이전에 정상적으로 작동하는 것으로 보입니다. 아래의 XCode에서했던 것 이외의 다른 제안 사항은 훌륭합니다.Ionic 3 - ios 11 - 항상 GPS 위치를 묻습니다.

PLIST 파일의 코드는 논리 반전했다

<key>NSLocationAlwaysUsageDescription</key> 
    <string>This app requires constant access to your location in order to track your position, even when the screen is off.</string> 

답변

1

에서 CDVLocation.m

if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){ 
      [self.locationManager requestWhenInUseAuthorization]; 
     } else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) { 
      [self.locationManager requestAlwaysAuthorization]; 
     } else { 
      NSLog(@"[Warning] No NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription key is defined in the Info.plist file."); 
     } 

, 그것은이 있어야한다 :

if ([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationAlwaysUsageDescription"]){ 
    [self.locationManager requestAlwaysAuthorization]; 
} else if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) { 
    [self.locationManager requestWhenInUseAuthorization]; 
} else { 
    NSLog(@"[Warning] No NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription key is defined in the Info.plist file."); 
} 

공지 사항 나는이 두 줄을 전환 :

[self.locationManager requestAlwaysAuthorization]; 
[self.locationManager requestWhenInUseAuthorization]; 

마스터 source code을 참조 할 수 있습니다.

또한 iOS 11의 경우 requesting always permission 일 때 NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription 키를 정보 plist에 포함해야합니다.

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> 
    <string>When always is requested in iOS 11</string> 
<key>NSLocationWhenInUseUsageDescription</key> 
    <string>When "when in use" is requested in iOS 11</string> 

당신은 앱의 Info.plist 파일에 NSLocationWhenInUseUsageDescription 및 NSLocationAlwaysAndWhenInUseUsageDescription 키를 포함해야합니다. 앱이 iOS 10 및 이전 버전을 지원하는 경우 NSLocationAlwaysUsageDescription 키도 필요합니다. 이러한 키가 없으면 승인 요청이 즉시 실패합니다.

+0

이 업데이트로 - 여전히 불행히도 작동하지 않습니다. – userlkjsflkdsvm

+0

@userlkjsflkdsvm 내 답변을 업데이트했습니다. 자세한 내용은 [here] (https://stackoverflow.com/a/46847825/5099014)에 링크 된 비디오를 참조하십시오. –

+0

Perfect! 고맙습니다! – userlkjsflkdsvm