Sonntag, 24. Juli 2016

iOS Xcode - Location Services unter iOS 8

Nach dem neusten Xcode Update dürfen iOS Apps nur noch mit iOS 8 kompiliert werden. Nach dieser Umstellung funktionierte anschließend der intern verwendete LocationManager nicht mehr.

Mit iOS 8 haben sich die Berechtigungen verändert. Diese müssen jetzt zwingend in der Info.plist als Schlüssel definiert werden:

  • NSLocationAlwaysUsageDescription
  • NSLocationWhenInUseUsageDescription
Beispiel:


<key>NSLocationAlwaysUsageDescription</key>
<string>This application requires location services to work</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This application requires location services to work</string>

Zusätzlich muss auch folgende Funktion hinzugefügt werden:

  • requestAlwaysAuthorization (for background location) oder
  • requestWhenInUseAuthorization (location only when foreground) 
Beispiel:


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // instance of the CLLocationManager class
    [super viewDidLoad];
    _locationManager = [[CLLocationManager alloc] init];
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    _locationManager.delegate = self;
    
    [_locationManager startUpdatingLocation];

    [_locationManager requestWhenInUseAuthorization]; // Notwendig ab iOS8
...

Keine Kommentare:

Kommentar veröffentlichen