webentwicklung-frage-antwort-db.com.de

IOS 9 Fehler Domain = kCLErrorDomain Code = 0 "(null)"

Code unten sollte aktuellen Standort erhalten. Aber obiger Fehler wird generiert. Die Funktion didUpdateLocations wird nie aufgerufen. 

Ausführen auf einem Gerät (iPhone 5s) iOS 9.1. In Info.plist sind die erforderlichen Gerätefunktionen und die Beschreibung der Verwendung des Datenschutzes - Standort wie im angehängten Bild gezeigt konfiguriert. Bitte helfen 

let locationManager = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()
    locationManager.delegate = self
    locationManager.requestAlwaysAuthorization()
    locationManager.requestLocation()
}


func locationManager(manager: CLLocationManager,
    didFailWithError error: NSError) 
    print(error.description)
}

func locationManager(manager: CLLocationManager, didUpdateLocations
      locations: [CLLocation]) {        
 print(“got location”)
}

 Info.plist

29
Tusshu

Bitte versuchen Sie dies:

Gehe zu :

  • Produkt -> Schema -> Schema bearbeiten -> Optionen -> Standortsimulation zulassen muss aktiviert sein und Geben Sie einen Standardstandort an, lassen Sie ihn nicht auf "Keine"

EDIT : Wie in den Kommentaren erwähnt, starte auch Xcode neu und du bist fertig!

Hoffe das hilft.

46
H4Hugo

Wenn die Warnung zur Standortautorisierung nicht angezeigt wird, versuchen Sie, NSLocationAlwaysUsageDescription als Typzeichenfolge zu Ihrer Liste hinzuzufügen. Machen Sie dasselbe für NSLocationWhenInUseUsageDescription.

3
user5516570

durchsuchen von Google Die Antworten scheinen seit IOS4.0 ein Problem zu sein.

in XCODE 7.1 unter Projekt => Schema => Schema bearbeiten.

unter Ausführen => Optionen => Core-Standort/Deaktivieren Sie Standortsimulation zulassen.

wählen Sie in Ihrem IOS Simulator unter Debug => Location einen Standort aus. Dies hat das Problem für mich behoben.

3
DustPhyte

Ich hatte das gleiche Problem mit einer App, die ich von 8.0 -> 9.0/9.1 umstellte. Ich habe ein paar Dinge ausprobiert, zB den CLLocationManager-Teil nur in Swift und ein neues Obj-C-Projekt schreiben. Ich habe es auch auf verschiedenen Geräten getestet. Um das Problem auf dem Gerät zu lösen, habe ich die Funktion didFailWithError entfernt. Was den Fehler insgesamt stoppt. Dies scheint nicht die beste Idee zu sein, aber in IOS9 können Sie Ihre Anwendung auf Geräte mit GPS oder Location-Services beschränken. Android macht das schon sehr lange. Ich habe auch festgestellt, dass in Ihrer .plist die Berechtigungen nicht für NSLocationALwaysUsageDescription oder NSLocationWhenInUseUsageDescrtiption-Eigenschaften aktiviert sind. 

Nur als Referenz habe ich angehängt, wie meine aktuelle .plist aussieht, die diesen Fehler nicht auslöst, sowie einen Code-Block in obj-c der Controller-Datei. Der Code beginnt am Ende einer vorherigen Funktion und hat dann den auskommentierten didFailWithError-Delegaten und die didUpdateLocations. Derzeit funktioniert dies erfolgreich in IOS 9.1

       //Get map authorization
    [CLLocationManager locationServicesEnabled];
    locationManager = [[CLLocationManager alloc]init];
    locationManager.delegate = self;
    locationManager.allowsBackgroundLocationUpdates = YES;
    if(nil == locationManager) locationManager = [[CLLocationManager alloc]init];
    if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [locationManager requestAlwaysAuthorization];
    }
    //locationManager.distanceFilter=10;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    [locationManager startUpdatingLocation];



//- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
//{
//    NSLog(@"didFailWithError: %@", error);
//    UIAlertView *errorAlert = [[UIAlertView alloc]
//                               initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
//    [errorAlert show];
//}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{


    NSLog(@"LocationUpdated: %@",[locations lastObject]);
    [self updateMapMarkers];

//    NSDate* eventDate = location.timestamp;
//    NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
//    if(fabs(howRecent) < 15.0){
//        [self updateMapMarkers];
//    }

}

 .plist image

2
Big Kahuna

Ich habe diese Vorschläge für Leute, die Apple-Karten in ihrer App verwenden

  1. Verweisen Sie nicht auf die Ergebnisse des Simulators, da immer keine genauen Ergebnisse erzielt werden.
  2. Für alle kartenbezogenen Debugging- und Ausführungstests auf realen Geräten.
  3. Wie in xcode 8 (mit meinem Wissen) können Sie Ihr iOS-Gerät einfach mit dem System verbinden und die App direkt ausführen.
  4. Auch für das obige Problem ist die Lösung gleich. Versuchen Sie es mit echten Geräten, um Ihr Problem zu lösen.
0
user6698531

Versuchen Sie dies vom Simulator aus -> Debuggen -> Ort

 enter image description here

0
PrimeDime