2012-11-22 12 views
14

Ho un'app che utilizza una combinazione di startMonitoringForRegion: e startMonitoringSignificantLocationChanges per tenere traccia di dove si trova l'utente quando l'app è in background. Significa che devo includere il valore location per la chiave UIBackgroundModes nello Info.plist?UIBackgroundMode posizione e modifiche significative alla posizione con monitoraggio regione

Questa è una citazione dalla documentazione:

Il servizio di localizzazione significativo cambiamento è altamente raccomandato per le applicazioni che non hanno bisogno di alta precisione dati di localizzazione. Con questo servizio, gli aggiornamenti di posizione vengono generati solo quando la posizione dell'utente cambia in modo significativo; quindi, è ideale per app o app social che forniscono all'utente informazioni non critiche relative alla posizione. Se l'app viene sospesa quando si verifica un aggiornamento, il sistema lo riattiva in background per gestire l'aggiornamento. Se l'app avvia questo servizio e viene quindi terminata, il sistema rilancia automaticamente l'app quando diventa disponibile una nuova posizione. Questo servizio è disponibile in iOS 4 e versioni successive ed è disponibile solo su dispositivi che contengono una radio cellulare.

...

Un'applicazione che fornisce aggiornamenti continui posizione per l'utente (anche se sullo sfondo) può attivare i servizi di localizzazione sfondo includendo la chiave UIBackgroundModes (con il valore posizione) nel proprio file Info.plist . L'inclusione di questo valore nella chiave UIBackgroundModes non preclude al sistema di sospendere l'app, ma comunica al sistema che deve riattivare l'app ogni volta che sono disponibili nuovi dati sulla posizione. Pertanto, questa chiave consente effettivamente all'app di essere eseguita in background per elaborare gli aggiornamenti di posizione ogni volta che si verificano.

La mia interpretazione di questo è che il valore per la chiave locationUIBackgroundModes è necessario solo se l'applicazione ha bisogno di aggiornamenti di posizione continui, come un'applicazione navigatore satellitare.

Ho anche provato a eseguire l'app su un dispositivo senza il valore location per la chiave UIBackgroundModes e continua a segnalare modifiche significative alla posizione e quando viene immessa una regione di uscita.

Inoltre, l'unica posizione che è UIBackgroundModes citata nello CLLocationManager Class Reference è nella discussione startUpdatingLocation, che non sto utilizzando.

risposta

14

Hai ragione riguardo alla chiave location, è necessaria solo quando l'app richiede aggiornamenti di posizione di alta precisione anche quando è in background. Qualcosa come Runkeeper usa questo per permettergli di tenere traccia della tua posizione, anche quando stai usando un'altra app con il multitasking. From the docs for iOS Keys: UIBackgroundModes

"location": L'applicazione fornisce informazioni basate sulla posizione per l'utente e richiede l'utilizzo dei servizi di localizzazione standard (in contrapposizione al significativo servizio di localizzazione di modifica) per implementare questa funzione.

E

Dove esistono alternative per l'esecuzione in background, le alternative dovrebbe essere usato al posto. Ad esempio, le app possono utilizzare l'interfaccia di modifica della posizione significativa per ricevere eventi di posizione anziché registrarsi come app per la posizione in background.

Il monitoraggio della regione funziona senza la chiave location. In effetti, il monitoraggio della regione funzionerà senza l'attivazione di alcun tasto speciale iOS.

Si dice che non si sta utilizzando CLLocationManager, ma se si sta utilizzando il monitoraggio della regione, sarà necessario utilizzare quella classe. Devi impostare un delegato del gestore località per la tua app per ottenere effettivamente le notifiche della regione.

+0

Intendevo che non sto usando 'startUpdatingLocation'. Grazie mille per la tua risposta! –

+0

Ah, ho capito, mi dispiace. –

+0

@AdamSwinden Sto usando il monitoraggio della regione nella mia app e in modalità background per gli aggiornamenti della posizione, quindi se devo usare la modalità in background cosa devo dire a reviewcenter. –

-1

Sì, è necessario aggiungere il tasto "posizione" in modalità Backround in Info.plist se si utilizza il servizio di cambio di posizione significativo (startMonitoringSignificantLocationChanges) per monitorare la posizione dell'utente in background e nello stato di eliminazione dell'app.

Problemi correlati