Core-Standort funktioniert nicht in iOS 8

8

Ich versuche, in iOS 8 eine signifikante Standortüberwachung zu verwenden, aber die Methode didUpdateLocations wird nie aufgerufen. Hier ist der Code zum Einrichten des Standortmanagers:

%Vor%

Trotz Aufruf von requestWhenInUseAuthorization wird nichts angezeigt, um den Benutzer zur Autorisierung aufzufordern. Ich habe NSLocationWhenInUseUsageDescription festgelegt, und es funktioniert immer noch nicht. didChangeAuthorizationStatus und didFailWithError werden auch nie aufgerufen. BEARBEITEN: Ich war in der Lage, es zu bekommen, um den Benutzer zu bitten, Standortdienste zu erlauben, aber selbst wenn Sie klicken, erlauben Sie es, zeigt nie den Standort.

    
charleyh 21.07.2014, 21:20
quelle

8 Antworten

17

Derzeit gibt es einen Fehler in iOS8 beta5, der den Geolocation-Dienst für Ihre App immer deaktiviert (zumindest für meinen).

Gehe in settings > Privacy > Location services > Your app > Always .

Aber ich weiß nicht warum, aber selbst wenn Sie Always einstellen, wird diese Einstellung automatisch deaktiviert. Seien Sie also bitte geduldig und kehren Sie oft in die Einstellungen zurück, um den Standort Ihrer App erneut zu konfigurieren.

    
Martin 13.08.2014, 10:19
quelle
11

Versuchen Sie CLLocationManager *locationManager in Ihrer Header-Datei zu deklarieren, dann funktioniert es. Wenn ich es nicht als globale Variable deklariere, wird nicht um Erlaubnis gefragt und der Standort wird aktualisiert.

.h

%Vor%

.m

%Vor%

Delegieren Methoden

%Vor%

info.plis

    
mohacs 21.07.2014 23:37
quelle
4

in .plist Datei hinzufügen

%Vor%     
bhavik 20.10.2014 14:36
quelle
2

Alle Schritte sehen vollständig aus, führen Sie : startUpdatingLocation jedoch erst aus, nachdem Sie nach : didChangeAuthorizationStatus gesucht haben.

Stellen Sie an diesem Punkt sicher, dass der authorizationStatus nicht kCLAuthorizationStatusNotDetered oder kCLAuthorizationStatusDenied ist.

Wenn dies der Fall ist, suchen Sie nach den String-Einträgen in info.plist.

Wenn Sie das Gefühl haben, dass alles korrekt ist, stellen Sie sicher, dass Sie die App vom Gerät deinstallieren. Führen Sie einen sauberen Build durch und führen Sie dann die App auf dem Gerät aus.

    
Abhilash Gopal 17.09.2014 17:37
quelle
2

Ich hatte ein ähnliches Problem bei der Migration meiner App zu iOS 8. Der ursprüngliche Code basiert auf dem von Apple bereitgestellten Beispielcode Ссылка Ich überprüfte, ob es aktualisiert wurde und es hatte. Der Hauptunterschied ist, dass in dieser Funktion das für iOS 8 relevante Bit kommentiert wurde. Das hat für mich funktioniert.

%Vor%     
Caevan Sachinwalla 22.09.2014 02:01
quelle
1

Versuchen Sie

  1. Hintergrundmodus in Funktionen aktiviert

  2. #import <CoreLocation/CoreLocation.h>

  3. <CLLocationManagerDelegate>

  4. locationManager = [[CLLocationManager alloc] init]; [locationManager setDelegate:(id)self]; [locationManager requestWhenInUseAuthorization];

    Das ist am Anfang der App

  5. NSLocationWhenInUseUsageDescription in plist

  6. Versuchen Sie CMD + SHIFT + K

  7. Versuchen Sie, das iPhone auszuschalten und dann einzuschalten - er hatte etwas Geld in iOS 8 - also nach 5-mal - app fragen Sie nicht nach Core Location - das hat mir geholfen

Elm Rid 17.09.2014 16:20
quelle
1

Der wahrscheinliche Grund, warum der Autorisierungsdialog nicht mit dem OP-Code angezeigt wird, ist, dass der Standortmanager herumhängen muss, damit er funktioniert.

Verwenden Sie eine Eigenschaft oder eine statische Variable, um locationManager im Speicher zu behalten.

    
hop 28.09.2014 22:00
quelle
0

Vielleicht ist es wegen der WhenInUseAuthorization nicht genug für die " Signifikante Standortänderung " Updates.

Wenn ich AlwaysAuthorization verwende, funktioniert es einfach.

Ich kann es in den Dokumenten nicht finden. Aber Sie können Ссылка überprüfen. Unter der Überschrift "Authorization Types" heißt es, dass wichtige Standortaktualisierungen AlwaysAuthorization benötigen.

    
Ahmet Recep Navruz 22.10.2014 14:19
quelle