2017-12-04 7 views
0

Für die neueste ios-Version auf dem iPhone, bekomme ich nicht die "immer" für immer verfolgen Sie Ihren Standort auf dem iPhone. Ich bekomme während der App und nie. Diese Funktionalität scheint jedoch für jede frühere Version zu funktionieren. Alle anderen Vorschläge, die ich in XCode gemacht habe, wären großartig.Ionic 3 - ios 11 - Fragen Sie immer nach dem GPS-Standort

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."); 
     } 

in der plist-Datei

<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> 

Antwort

1

Der Code der Logik invertiert hat, sollte es sein:

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."); 
} 

Hinweis wechselte ich diese beiden Zeilen :

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

Sie können sich auf den Master beziehen source code.

Zusätzlich, für iOS 11, wenn requesting always permission sollten Sie die NSLocationAlwaysAndWhenInUseUsageDescription und die Schlüssel in Ihrem Info-Plist enthalten.

<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> 

Sie sind verpflichtet, die NSLocationWhenInUseUsageDescription und NSLocationAlwaysAndWhenInUseUsageDescription Schlüssel in Ihrer App Info.plist Datei aufzunehmen. (Wenn Ihre App iOS 10 oder früher unterstützt, ist auch der NSLocationAlwaysUsageDescription-Schlüssel erforderlich.) Wenn diese Schlüssel nicht vorhanden sind, schlagen Autorisierungsanforderungen sofort fehl.

+0

Mit diesem Update - es funktioniert leider immer noch nicht. – userlkjsflkdsvm

+0

@userlkjsflkdsvm Ich aktualisierte meine Antwort, für weitere Informationen, sehen Sie das Video [hier verlinkt] (https://stackoverflow.com/a/46847825/5099014) –

+0

Perfekt! Bin dankbar! – userlkjsflkdsvm

Verwandte Themen