2016-05-26 38 views
6

Mi scuso per la ridondanza di questo argomento, ma nonostante tutte le risposte date, non riesco a identificare la possibilità di ottenere l'accuratezza degli aggiornamenti di posizione migliori quando l'app viene interrotta. Non voglio usare monitoringSignificantChange, voglio la massima accuratezza possibile; Non inoltrerò l'app all'App-Store, quindi le restrizioni Apple non sono un problema.IOS Ottenere gli aggiornamenti di posizione quando l'app termina senza utilizzare significantChange

Ho passato con questi:

-Location update even when app is killed/terminated

-iOS update location even when app is terminated

- Working with location updates when app is terminated

-http://mobileoop.com/getting-location-updates-for-ios-7-and-8-when-the-app-is-killedterminatedsuspended

e molti di più, ma non è chiaro, mentre è possibile o no. Al momento ho il mio progetto, tutto funziona alla grande con ChangeChange ma ora ho bisogno di una precisione migliore.

Qualcuno potrebbe dirmi semplicemente se è possibile ottenere il miglior aggiornamento della posizione di precisione quando l'app viene uccisa?

Grazie infinitamente,

+0

Sì, è possibile, ma potrebbe essere necessario combinare con significativo monitoraggio posizione al fine di ottenere gli aggiornamenti di posizione continui; http://stackoverflow.com/questions/20187700/startupdatelocations-in-background-didupdatingtolocation-only-called-10-20-time – Paulw11

risposta

7

Guardando il contenuto di Apple doc in basso, si hanno chiaramente 2 alternative rispetto all'utilizzo di modifiche di posizione significative per attivare un'app dallo sfondo. Ho contrassegnato in grassetto i servizi che puoi utilizzare per riavviare l'app se è stata interrotta.

Utilizzando i servizi di localizzazione in background La maggior parte dei servizi di localizzazione sono destinato a essere utilizzato durante la vostra applicazione è in primo piano, ma alcuni possono anche corsa in background. In alcuni casi, gli eventi di posizione possono persino causare il riavvio della tua app per l'elaborazione di un evento tramite . Per eseguire la maggior parte dei servizi di posizione in background, è necessario abilitare la modalità di aggiornamento degli aggiornamenti di posizione nella scheda Funzionalità del progetto Xcode. Per i servizi che avviano l'app, è necessario richiedere (ed essere concesso) l'autorizzazione "Sempre" da parte dell'utente.

Il servizio di localizzazione standard consegna gli eventi normalmente mentre un'app è in esecuzione in primo piano. Quando la tua app è in background, questo servizio offre eventi solo quando la modalità in background aggiornamenti location è abilitata per l'app. Questo servizio non riavvia le app iOS che sono state interrotte.

Il servizio di cambio posizione significativo consegna eventi normalmente mentre un'app è in esecuzione in primo piano o in background. Per un'app per iOS terminata , questo servizio riavvia l'app per fornire eventi . L'utilizzo di questo servizio richiede l'autorizzazione "Sempre" dell'utente .

Il servizio di monitoraggio regione consegna gli eventi normalmente mentre un'applicazione è in esecuzione in primo piano o in background. (È possibile utilizzare questo servizio per entrambe le aree geografiche e beacon.) Per un'app iOS terminata , questo servizio riavvia l'app per la distribuzione degli eventi. Uso di Questo servizio richiede l'autorizzazione "Sempre" da parte dell'utente.

Il beacon che fornisce gli eventi normalmente mentre un'applicazione è in esecuzione in primo piano . Quando la tua app è in background, questo servizio offre eventi solo quando la modalità di aggiornamento degli aggiornamenti di posizione è abilitata per l'app e il servizio di localizzazione standard è in esecuzione. (Se la proprietà notifyEntryStateOnDisplay del beacon region è impostata su YES, la sveglia del dispositivo fa sì che l'app diventi per alcuni secondi sullo sfondo .) Questo servizio non riavvia le app iOS che sono state interrotte ; tuttavia, è possibile riavviarlo monitorando le regioni del faro utilizzando il servizio di monitoraggio della regione.

Il servizio di prua consegna eventi normalmente mentre un'app per iOS è in esecuzione in primo piano. Quando l'app è in background, questo servizio consegna eventi solo quando la modalità in background aggiornamenti posizione è abilitata per l'app e il servizio di localizzazione standard è in esecuzione. Questo servizio non riavvia le app iOS che sono state interrotte.

Il servizio di visita consegna gli eventi normalmente mentre un'app per iOS è in esecuzione in primo piano. Quando l'app è in background, questo servizio consegna eventi solo quando la modalità in background aggiornamenti posizione è abilitata per l'app e il servizio di localizzazione standard è in esecuzione. Per un'app iOS terminata, questo servizio riavvia l'app per la distribuzione degli eventi. L'utilizzo di questo servizio richiede l'autorizzazione "Sempre" dell'utente .

Abilitando la modalità di aggiornamento degli aggiornamenti di posizione si assicura che un'app continui a ricevere eventi di posizione mentre è in background. Quando l'app si sposta sullo sfondo, il sistema aggiunge l'indicatore di posizione alla barra di stato per informare l'utente che un'app utilizza i servizi di posizione . Il sistema può ancora terminare l'app in qualsiasi momento per recuperare la sua memoria o altre risorse.

Anche dal doc,

Ottenere i Luoghi Visitato in IOS, il servizio di visite fornisce un'alternativa al servizio di significativo cambiamento di posizione per le applicazioni che necessitano di posizione informazioni su luoghi interessanti che l'utente ha visitato. Per esempio , se l'utente si trova in una posizione per un periodo prolungato di tempo , il servizio potrebbe generare un evento quando l'utente arriva a tale posizione e un altro quando l'utente lascia quella posizione. Il servizio è destinato alle app che potrebbero già utilizzare il servizio di cambio di posizione significativo e desiderano un modo di alimentazione ancora più basso, , per farlo. Non utilizzeresti questo servizio per creare app di navigazione o app che si basano su aggiornamenti regolari della posizione.

Document Link:

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/doc/uid/TP40007125-CH3-SW73

+0

Grazie mille ... Quindi nessuna alternativa al servizio di visita o al monitoraggio della regione. Stavo cercando di ottenere aggiornamenti di posizione continui mentre l'app viene uccisa. Ma capisco che Apple lo limita solo agli eventi. – scoobyDoo

3

aggiornamenti di posizione continui fermano quando la vostra applicazione è terminata.

Le notifiche di Geo-fence rilanceranno l'app anche se non è in esecuzione. Penso che un cambio di posizione significativo rilancerà anche la tua app, ma non ne sono sicuro.

Una volta entrato in rilanciato si può iniziare di nuovo gli aggiornamenti di posizione con la precisione impostare al meglio come si vuole, ma penso che si sta andando ad avere bisogno di utilizzare una di queste due API per ottenere di nuovo rilanciato dopo che sei stato terminato.