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.
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.
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
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.
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%Versuchen Sie
Hintergrundmodus in Funktionen aktiviert
#import <CoreLocation/CoreLocation.h>
<CLLocationManagerDelegate>
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:(id)self];
[locationManager requestWhenInUseAuthorization];
Das ist am Anfang der App
NSLocationWhenInUseUsageDescription
in plist
Versuchen Sie CMD + SHIFT + K
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
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.
Tags und Links ios cocoa-touch ios8 core-location