CLLocation Manager in Swift, um den Standort des Benutzers zu ermitteln
Ich versuche zu konvertieren, eine alte app in ObjC zu Swift als eine Praxis übung und haben lief in einige Probleme. Die Art und Weise, ich habe es in der alten app war es zur Gründung der CLLocation-Manager und dann würde ich verwenden:
manager = [[CLLocationManager alloc]init];
manager.delegate = self;
manager.desiredAccuracy = kCLLocationAccuracyBest;
[manager startUpdatingLocation]
welche nennen würde automatisch:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
}
und von dort konnte ich extrahieren Sie alle Informationen, die ich brauchte. Aber in swift gibt es keine Autovervollständigung von dieser Methode, und ich kann nicht herausfinden, wie um es zu reproduzieren. Die Dokumentation sagt, dass
startUpdatingLocation()
wird noch genannt werden, von der Stellvertretung, aber es ist nicht passiert.
Dies ist, was ich habe, so weit:
import UIKit
import corelocation
class ViewController: UIViewController,CLLocationManagerDelegate{
@IBOutlet var gpsResult : UILabel
var manager:CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
manager = CLLocationManager()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.startUpdatingLocation()
}
func locationManager(manager:CLLocationManager, didUpdateLocations locations:AnyObject[]) {
println("locations = \(locations)")
gpsResult.text = "success"
}
}
Jede Hilfe oder Hinweise, wo man suchen würde sehr geschätzt. Danke.
EDIT: Aktualisierte Vorschläge, aber immer noch nicht funktioniert
EDIT2: Scheint zu sein, einige Fehler nicht erlaubt, die Methode funktioniert in der ViewController
InformationsquelleAutor der Frage Sean Fitz | 2014-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie fehlen zwei Dinge. Erste, Sie haben zu Fragen, für die Erlaubnis der Verwendung
requestAlwaysAuthorization
oderrequestWhenInUseAuthorization()
. So IhrviewDidLoad()
sollte wie folgt sein:Zweite, Bearbeiten Sie Ihre
Info.plist
so wie hier angezeigt.InformationsquelleAutor der Antwort danilopez.dev
Zuerst fügen Sie diese zwei line-in der plist-Datei
1) NSLocationWhenInUseUsageDescription
2) NSLocationAlwaysUsageDescription
Dann ist das Klasse Arbeit die vollständige Umsetzung dieser
InformationsquelleAutor der Antwort jayesh kavathiya
Ich bin mir nicht sicher, warum, aber es scheint, wie
startUpdatingLocation
ist nicht präsentieren dem Benutzer eine Eingabeaufforderung auf dem iOS 7 simulator, aber wenn ich aktiviert es manuell, es funktioniert wie erwartet, wenn ich die neuere form der delegate-Methode:Format, die Sie verwenden ist veraltet seit iOS 5 oder 6, also es ist anscheinend gar nicht unterstützt durch die rasche überbrückung Schichten.
InformationsquelleAutor der Antwort David Berry
hatte das gleiche Problem. didUpdateLocations - funktionierte nicht. Führen Sie Ihre app aus. Gehen Sie auf die Seite Einstellungen -> Datenschutz -> Position und schalten Sie Ortungsdienste. didFailWithError fangen die Fehler über abwesend Location Services. Dann schalten Sie es auf. Seit diesem moment didUpdateLocations fangen Standorten.
InformationsquelleAutor der Antwort salty
Ich hoffe, es gibt zwei Möglichkeiten.
Umsetzung CLLocationManagerDelegate :
Überprüfung CLLocationDelegate Genehmigung:
Hinweis: changeStatusToOn oder changeStatusToOff ist ein UILabel Erweiterung würde die Methode, die macht der Label-text ein - /Ausschalten mit Grün/Rot Farben.
InformationsquelleAutor der Antwort Alvin George
Hier mein sehr einfacher code, der funktioniert:
ersten add-Core Location framework allgemein/Verlinkten Frameworks und Bibliotheken
fügen Sie dann Folgendes in der Info.plist:
dies ist meiner ViewController.swift-Datei:
InformationsquelleAutor der Antwort Jarda Pavlíček
Für Swift 3
InformationsquelleAutor der Antwort Steffen
don nicht vergessen, hinzuzufügen
NSLocationWhenInUseUsageDescription oder
NSLocationAlwaysUsageDescription
in Ihrer Konfigurations-Datei (Ziel - /Info - /custom-iOS-target-Eigenschaften
InformationsquelleAutor der Antwort Vassily
Hinzufügen Balg 2 Eigentum in info.plist
InformationsquelleAutor der Antwort Mitul Marsoniya
Wenn Sie wollen, to get user location aktualisiert, standardmäßig, auch ohne klicken auf "Simulation Standort' everytime, gehen Sie zu
Die Lage wird aktualisiert, automatisch/standardmäßig beim ausführen der app im simulator. Getestet und funktioniert in Swift 2 !
InformationsquelleAutor der Antwort Naishta
Dadurch wird die Erlaubnis zu bitten und zu verfolgen, ob die Erlaubnis gegeben, sonst beenden Sie mit einer Warnung. Stoppt die Verfolgung auf zurück drücken.
info.plist
Klasse:
InformationsquelleAutor der Antwort Gary Davies