Dies ist der vierte und letzte Teil der Serie zu iOS Multitasking. Heute werden wir über Hintergrundort berichten. Genau wie die vorherigen iOS Multitasking-Tutorials dieser Serie ist diese Funktion einfach und leicht zu implementieren. So lass uns anfangen!
Erstellen Sie zunächst ein Projekt mit der View Based Application Template. Benennen Sie das Projekt BackgroundTracker und deaktivieren Sie Unit Tests.
Gehen Sie nun zu den Zieleinstellungen und dann zur Registerkarte "Erstellungsphasen".
Fügen Sie im Abschnitt "Binär mit Bibliotheken verknüpfen" das CoreLocation Framework hinzu.
Gehen Sie nun unter Unterstützende Dateien zu BackgroundTrack-Info.plist und fügen Sie eine neue Zeile mit dem Schlüssel Erforderliche Hintergrundmodi hinzu. Es sollte ein Array werden. Öffnen Sie das Array, und legen Sie für Element 0 den Wert für den Schlüssel in App-Registern für Standortaktualisierungen fest.
Gehen Sie nun in die Seitenleiste des Projekts und öffnen Sie die BackgroundTrackerViewController.h. Oben unter #import
#einführen
Unmittelbar rechts von der Deklaration der UIViewController-Unterklasse fügen Sie die folgende Zeile ein:
Fügen Sie dann unter der @interface-Deklaration (direkt unter der Zeile, die Sie gerade zum CLLocationManagerDelegate hinzugefügt haben) den folgenden Code hinzu:
CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel;
Fügen Sie dann unter der unteren schließenden Klammer diese Zeilen hinzu:
@ property (nonatomic, keep) CLLocationManager * locationManager; @ property (nichtatomisch, beibehalten) IBOutlet UIButton * startTrackingButton; @ property (nichtatomisch, beibehalten) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) Sender;
Ihre .h-Datei sollte Folgendes mögen.
#einführen#einführen @Interface BackgroundTrackerViewController: UIViewController CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel; @ property (nicht atomar, beibehalten) CLLocationManager * locationManager; @ property (nichtatomisch, beibehalten) IBOutlet UIButton * startTrackingButton; @ property (nichtatomisch, beibehalten) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) Sender; @Ende
Öffnen Sie nun die BackgroundTrackerViewController.xib. Ziehen Sie zunächst einen UIButton in die Mitte der Benutzeroberfläche, sodass die blauen Hilfslinien sich kreuzweise befinden. Dann gehen Sie zum Connections Inspector. Ziehen Sie die touchUpInside-Aktion auf den Besitzer der Datei und wählen Sie startTracking: aus. Ziehen Sie dann den referenzierenden Auslass zum Besitzer der Datei und wählen Sie den startTrackingButton aus. Ziehen Sie nun ein UILabel und positionieren Sie es über dem UIButton. Stellen Sie die Breite auf den gesamten Bildschirm ein und legen Sie den Text so fest, dass "Standort nicht gefunden" (ohne Anführungszeichen) angezeigt werden kann. Setzen Sie dann im Attribut-Inspektor das Kontrollkästchen Ausgeblendet auf. Gehen Sie dann zum Verbindungsinspektor. Ziehen Sie dann den Referenzauslass zum Eigentümer der Datei und wählen Sie alertLabel aus.
Öffnen Sie jetzt LocationTrackerViewController.m. Fügen Sie unter der @implementation-Zeile die folgenden zwei Codezeilen hinzu:
@synthesize startTrackingButton; @synthesize locationManager; @synthesize alertLabel;
Fügen Sie nun in der Dealloc: -Methode die folgenden Codezeilen unter dem [Super Dealloc] hinzu. Linie.
[locationManager-Version]; [startTrackingButton release]; [alertLabel release];
Fügen Sie dem viewDidLoad jetzt die folgenden Codezeilen hinzu: unter [super viewDidLoad]; Linie.
locationManager = [[CLLocationManager-Zuordnung] init]; [locationManager setDelegate: self]; // Gilt nur im Vordergrund, sonst sind es sehr bedeutende Änderungen [locationManager setDesiredAccuracy: kCLLocationAccuracyBest];
Fügen Sie unter den @synthesize-Deklarationen die folgende Methode hinzu:
- (IBAction) startTracking: (id) Sender [locationManager startUpdatingLocation];
Fügen Sie dann über der startTracking: -Methode die CLLocatioManager-Delegat-Methoden hinzu (Code unten)..
- (void) locationManager: (CLLocationManager *) - Manager didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation CLLocationCoordinate2D currentCoordinates = newLocation.coordinate; [alertLabel setText: @ "Ort wurde gefunden"]; [alertLabel setHidden: NO]; NSLog (@ "Neuer Standort mit den Koordinaten Latitude:% f Longitude:% f", currentCoordinates.latitude, currentCoordinates.longitude); - (void) locationManager: (CLLocationManager *) - Manager didFailWithError: (NSError *) - Fehler NSLog (@ "Positionsmanager kann nicht gestartet werden. Fehler:% @", [Fehlerbeschreibung]); [alertLabel setHidden: NO];
Wie die vorherigen drei ist Background Location extrem einfach zu implementieren. Wenn Sie Hilfe benötigen oder nur einen hilfreichen Tipp haben, kommentieren Sie bitte unten.