Questa è la quarta e ultima parte della serie su iOS Multitasking. Oggi copriremo la posizione in background. Proprio come i precedenti tutorial di Multitasking iOS di questa serie, questa funzione è semplice e facile da implementare. Quindi iniziamo!
Innanzitutto, crea un progetto con il modello di applicazione basato su vista. Denominare il progetto BackgroundTracker e disattivare Test unitari.
Ora vai alle impostazioni di destinazione e poi vai alla scheda Fasi di costruzione.
Nella sezione "Collega binari con librerie" aggiungi CoreLocation Framework.
Ora, in Supporting Files vai su BackgroundTrack-Info.plist e aggiungi una nuova riga con la chiave di Required Background Modes. Dovrebbe diventare un array. Aprire la matrice e per la voce 0 impostare il valore della chiave nei registri delle app per gli aggiornamenti della posizione.
Ora vai nella barra laterale del progetto e apri il BackgroundTrackerViewController.h. In alto, sotto #import
#importare
All'immediata destra della dichiarazione della sottoclasse UIViewController, aggiungere la seguente riga:
Quindi sotto la dichiarazione @interface (proprio sotto la riga appena aggiunta a CLLocationManagerDelegate) aggiungi il seguente codice:
CLLocationManager * locationManager; IBOutlet UIButton * startTrackingButton; IBOutlet UILabel * alertLabel;
Quindi sotto la parentesi di chiusura inferiore aggiungi queste linee:
@property (nonatomic, retain) CLLocationManager * locationManager; @property (nonatomic, retain) IBOutlet UIButton * startTrackingButton; @property (nonatomic, retain) IBOutlet UILabel * alertLabel; - (IBAction) startTracking: (id) mittente;
Il tuo .h file dovrebbe come il seguente.
#importare#importare @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) mittente; @fine
Ora apri il BackgroundTrackerViewController.xib. Innanzitutto, trascina un UIButton al centro dell'interfaccia in modo che le linee guida blu siano a forma di croce. Quindi vai a Connections Inspector. Trascina l'azione touchUpInside sul proprietario del file e seleziona startTracking :. Quindi trascinare la presa di riferimento sul proprietario del file e selezionare startTrackingButton. Ora trascina un UILabel e posizionalo sopra l'UIButton. Imposta la larghezza per l'intero schermo e imposta il testo per dire "Impossibile trovare la posizione" (senza virgolette). Quindi in Impostazioni Attributi imposta la casella di controllo Nascosto da verificare. Quindi vai all'ispettore delle connessioni. Quindi trascinare la presa di riferimento sul proprietario del file e selezionare alertLabel.
Ora vai e apri LocationTrackerViewController.m. Sotto la riga @implementation aggiungi le seguenti due righe di codice:
@synthesize startTrackingButton; @synthesize locationManager; @synthesize alertLabel;
Ora nel dealloc: metodo aggiungi le seguenti linee di codice sotto [super dealloc]; linea.
[versione locationManager]; [startTrackingButton release]; [alertLabel release];
Ora aggiungi le seguenti righe di codice a viewDidLoad: sotto [super viewDidLoad]; linea.
locationManager = [[allocazione di CLLocationManager] init]; [locationManager setDelegate: self]; // Si applica solo quando è in primo piano, altrimenti si tratta di modifiche molto significative [locationManager setDesiredAccuracy: kCLLocationAccuracyBest];
E sotto le dichiarazioni @synthesize aggiungi il seguente metodo:
- (IBAction) startTracking: (id) mittente [locationManager startUpdatingLocation];
Quindi sopra il metodo startTracking: aggiungi i metodi delegati CLLocatioManager (codice sotto).
- (void) locationManager: (CLLocationManager *) manager didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation CLLocationCoordinate2D currentCoordinates = newLocation.coordinate; [alertLabel setText: @ "Posizione trovata"]; [alertLabel setHidden: NO]; NSLog (@ "Nuova posizione immessa con le coordinate Latitudine:% f Longitudine:% f", correnteCoordinati.latitudine, correnteCoordinati.lunghezza); - (void) locationManager: gestore (CLLocationManager *) didFailWithError: errore (NSError *) NSLog (@ "Impossibile avviare il gestore località. Errore:% @", [descrizione errore]); [alertLabel setHidden: NO];
Come i precedenti tre, la localizzazione in background è estremamente facile da implementare. Se hai bisogno di aiuto o solo un suggerimento utile per favore commenta qui sotto.