Pasul 1 Crearea proiectului

Aceasta este a patra și ultima parte a seriei despre multitasking-ul iOS. Astăzi vom acoperi locația de fundal. La fel ca tutorialele iOS Multitasking anterioare din această serie, această caracteristică este simplă și ușor de implementat. Asadar, hai sa incepem!

Pasul 1: Crearea proiectului

Mai întâi, creați un proiect cu șablon de aplicație bazat pe vizualizare. Denumiți proiectul BackgroundTracker și dezactivați testele de unitate.

Acum, mergeți la setările destinație și apoi mergeți la fila Construiți faze.

În secțiunea "Link Binary with Libraries" adăugați CoreLocation Framework.

Acum, sub Fișiere de susținere accesați BackgroundTrack-Info.plist și adăugați o linie nouă cu cheia modurilor de fundal necesare. Ar trebui să devină o matrice. Deschideți matricea și pentru elementul 0 setați valoarea pentru cheie pentru registrele App pentru actualizări de locație.

Pasul 2: Codificarea interfeței utilizator

Acum intrați în bara laterală a proiectului și deschideți BackgroundTrackerViewController.h. În partea de sus, sub #import , adăugați următoarea linie:

 #import 

În dreptul imediat al declarației de subclasă UIViewController adăugați următoarea linie:

 

Apoi, sub declarația @interface (chiar sub linia pe care tocmai ați adăugat la CLLocationManagerDelegate) adăugați următorul cod:

 CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel;

Apoi, sub dispozitivul de închidere inferior, adăugați următoarele linii:

 @property (nonatomic, reține) CLLocationManager * locationManager; @property (nonatomic, reține) IBOutlet UIButton * startTrackingButton; @property (nonatomic, reține) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) expeditor;

Fișierul .h vă va plăcea următoarele.

 #import  #import  @interface BackgroundTrackerViewController: UIViewController  CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel;  @property (nonatomic, reține) CLLocationManager * locationManager; @property (nonatomic, reține) IBOutlet UIButton * startTrackingButton; @property (nonatomic, reține) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) expeditor; @Sfârșit

Pasul 3: Configurați interfața XIB

Deschideți acum BackgroundTrackerViewController.xib. Mai întâi, trageți un UIButton la mijlocul interfeței astfel încât liniile albastre să fie în formă încrucișată. Apoi mergeți la Inspectorul de conexiuni. Glisați acțiunea touchUpInside la proprietarul fișierului și selectați startTracking :. Apoi trageți priza de referință la proprietarul fișierului și selectați startTrackingButton. Trageți acum o UILabel și poziționați-o deasupra UIButtonului. Setați lățimea întregului ecran și setați textul pentru a spune "Locația nu poate fi găsită" (fără ghilimele). Apoi, în Inspectorul de Atribute setați caseta de selectare Ascunsă pentru a fi bifată. Apoi mergeți la inspectorul conexiunilor. Apoi trageți priza de referință la proprietarul fișierului și selectați alertLabel.

Pasul 4: Configurați urmărirea locației

Acum du-te și deschideți LocationTrackerViewController.m. Sub linia @implementation adăugați următoarele două linii de cod:

 @synthesize startTrackingButton; @synthesize locationManager; @synthesize alertLabel;

Acum, în metoda dealloc: adăugați următoarele linii de cod sub [super dealloc]; linia.

 [locationManager release]; [lansare startTrackingButton]; [alertăLabel de lansare];

Acum adăugați următoarele linii de cod la viewDidLoad: sub [super viewDidLoad]; linia.

 locationManager = [[CLLocationManager alocare] init]; [locationManager setDelegate: self]; // Se aplică numai în cazul în prim plan, altfel este vorba despre modificări foarte importante [locationManager setDesiredAccuracy: kCLLocationAccuracyBest];

Și sub declarațiile @synthesize adăugați următoarea metodă:

 - (IBAction) startTracking: (id) expeditor [locationManager startUpdatingLocation]; 

Apoi deasupra metodei startTracking: adăugați metodele delegatelor CLLocatioManager (cod de mai jos).

 - (void) locationManager: (CLLocationManager *) managerul didUpdateToLocation: (locația CLL *) newLocation fromLocation: (CLLocation *) oldLocation CLLocationCoordinate2D currentCoordinates = newLocation.coordinate; [alertLabel setText: @ "Locația a fost găsită"]; [alertLabel setHidden: NO]; NSLog (@ "Introducerea unei noi locații cu coordonatele Latitude:% f Longitudine:% f", currentCoordinates.latitude, currentCoordinates.longitude);  - (void) locationManager: (managerul CLLocationManager *) didFailWithError: (NSError *) eroare NSLog (@ "Eroare:% @", [descriere eroare]); [alertLabel setHidden: NO]; 

Învelire

Ca și celelalte trei, locația de fundal este extrem de ușor de implementat. Dacă aveți nevoie de ajutor sau aveți doar un sfat util, vă rugăm să comentați mai jos.

Cod