Dit is het vierde en laatste deel van de serie over iOS Multitasking. Vandaag behandelen we Achtergrondlocatie. Net als de vorige iOS Multitasking-tutorials in deze serie, is deze functie eenvoudig en gemakkelijk te implementeren. Dus laten we beginnen!
Maak eerst een project met de View Based Application Template. Geef het project BackgroundTracker een naam en schakel unittests uit.
Ga nu naar de doelinstellingen en ga vervolgens naar het tabblad Build Phases.
Voeg in het gedeelte "Binaire koppelingen met bibliotheken toevoegen" het CoreLocation Framework toe.
Ga nu onder Ondersteunende bestanden naar BackgroundTrack-Info.plist en voeg een nieuwe regel toe met de sleutel van de vereiste achtergrondmodi. Het zou een array moeten worden. Open de array en stel voor Item 0 de waarde in voor de sleutel naar App-registers voor locatie-updates.
Ga nu naar de zijbalk van het project en open de BackgroundTrackerViewController.h. Aan de top, onder #import
#importeren
Voer de volgende regel direct rechts van de decoderverklaring UIViewController in:
Voer vervolgens onder de @interface-declaratie (rechts onder de regel die u zojuist aan de CLLocationManagerDelegate hebt toegevoegd) de volgende code toe:
CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel;
Voeg vervolgens onder de onderste sluitbeugel deze lijnen toe:
@property (nonatomic, retain) CLLocationManager * locationManager; @property (nonatomic, retain) IBOutlet UIButton * startTrackingButton; @property (nonatomic, retain) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) afzender;
Uw .h-bestand zou het volgende moeten bevallen.
#importeren#importeren @interface BackgroundTrackerViewController: UIViewController CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel; @property (nonatomic, retain) CLLocationManager * locationManager; @property (nonatomic, retain) IBOutlet UIButton * startTrackingButton; @property (nonatomic, retain) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) afzender; @einde
Open nu de BackgroundTrackerViewController.xib. Sleep eerst een UIButton naar het midden van de interface zodat de blauwe hulplijnen elkaar kruisen. Ga vervolgens naar de Connections Inspector. Sleep de actie touchUpInside naar de eigenaar van het bestand en selecteer startTracking :. Sleep vervolgens het verwijzingspunt naar de eigenaar van het bestand en selecteer de startTrackingButton. Versleep nu een UILabel en plaats het boven de UIButton. Stel de breedte in als het volledige scherm en stel de tekst in om te zeggen "Kan locatie niet vinden" (zonder aanhalingstekens). Stel vervolgens in de Attributen Inspector het selectievakje Verborgen in om te worden gecontroleerd. Ga vervolgens naar de Verbindingsinspecteur. Sleep vervolgens het verwijzingspunt naar de eigenaar van het bestand en selecteer alertLabel.
Ga nu naar en open LocationTrackerViewController.m. Voer onder de regel @implementation de volgende twee regels code in:
@synthetize startTrackingButton; @synthesize locationManager; @synthesize alertLabel;
Voeg nu in de dealloc: methode de volgende coderegels toe onder de [super dealloc]; lijn.
[locationManager release]; [startTrackingButton release]; [release alarmLabel];
Voeg nu de volgende regels toe aan de viewDidLoad: onder de [super viewDidLoad]; lijn.
locationManager = [[CLLocationManager alloc] init]; [locationManager setDelegate: self]; // Alleen van toepassing op voorgrond, anders zijn het zeer belangrijke wijzigingen [locationManager setDesiredAccuracy: kCLLocationAccuracyBest];
En voeg onder de @synthesize-aangiften de volgende methode toe:
- (IBAction) startTracking: (id) afzender [locationManager startUpdatingLocation];
Voeg dan boven de methode startTracking: de CLLocatioManager-deelnemersmethoden toe (code hieronder).
- (void) locationManager: (CLLocationManager *) manager didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation CLLocationCoordinate2D currentCoordinates = newLocation.coordinate; [alertLabel setText: @ "Locatie is gevonden"]; [alertLabel setHidden: NO]; NSLog (@ "Nieuwe locatie ingevoerd met de coördinaten Breedtegraad:% f Lengtegraad:% f", currentCoordinates.latitude, currentCoordinates.longitude); - (void) locationManager: (CLLocationManager *) manager didFailWithError: (NSError *) error NSLog (@ "Kan locatiemanager niet starten. Fout:% @", [foutbeschrijving]); [alertLabel setHidden: NO];
Net als de vorige drie is Achtergrondlocatie uiterst eenvoudig te implementeren. Als je hulp nodig hebt of een handige tip hebt, reageer dan hieronder.