2012-06-26 5 views
10

Cosa succede se chiamo startUpdatingLocation mentre startMonitoringSignificantLocationChanges è in esecuzione? Il monitoraggio di LocationLocation significativa viene arrestato? Se io allora stopUpdatingLocation il monitoraggio di LocationLocation significativa continuerà o si riavvierà?In che modo startMonitoringSignificantLocationChanges e startUpdatingLocation hanno effetto l'un l'altro?

Non riesco a trovare alcuna documentazione che copra l'interazione tra queste due modalità di monitoraggio.

+0

Ehi, hai trovato ulteriori informazioni su questo? Soprattutto la parte di interazione. IOS impedisce a uno di essere eseguito se l'altro è avviato? – Philiiiiiipp

+0

Sapete se è possibile eseguire 'startUpdatingLocation' dopo aver ottenuto un' startMonitoringSignificantLocationChanges' in backgroundState? – Honey

+0

Mi dispiace ma non uso questa API da molti anni. Perché non fai una nuova domanda? – Undistraction

risposta

3

Non sono pensati per essere usati contemporaneamente. È o perché entrambi forniscono le modifiche di direzione e ubicazione allo stesso metodo di delega.

locationManager: didUpdateToLocation: fromLocation

Si differenziano per la frequenza e la precisione (e dall'hardware estensione usata e consumi) delle variazioni. Come sviluppatore devi decidere quale sia il migliore in base al tuo caso d'uso

Ho bisogno di utilizzare entrambi gli approcci in momenti diversi. Quando passo da uno all'altro, imposto una bandiera che posso fare riferimento nel mio delegato in modo da conoscere il tipo di aggiornamento.

+1

Grazie. Questo è esattamente quello che sto facendo in questo momento. Ho avvolto CLLocationService con il mio servizio e sto usando quello per impostare i flag per il tipo di servizi utilizzati. Ero solo interessato a come i due interagiscono. È interessante notare come completamente i documenti Apple trascurino di menzionare questo argomento. – Undistraction

+1

Negli ultimi documenti, Apple afferma che possono essere eseguiti simultaneamente, ma non fornisce dettagli sull'interazione. "Se entrambi i servizi di localizzazione sono abilitati contemporaneamente, forniscono eventi utilizzando lo stesso set di metodi delegati." https://developer.apple.com/reference/corelocation/cllocationmanager –

14

Non credo che la risposta accettata risponda veramente alla domanda posta. Ho fatto alcuni test e puoi usarli entrambi se vuoi e non si annulleranno a vicenda.

Perché qualcuno dovrebbe voler usare entrambi? Perché startMonitoringSignificantLocationChanges si riattiva l'app da sospendere o terminare senza la necessità di alcuna modalità di sfondo. Pertanto, se esegui entrambi, puoi ottenere aggiornamenti precisi sulla posizione in primo piano e aggiornamenti significativi sulla posizione in background.

Naturalmente, è possibile passare il metodo, quando si va in fondo, ma a) che non era la domanda b) si aggiunge la logica non necessari

Naturalmente, c'è una domanda se in esecuzione entrambi i metodi drena più batteria, ma la mia scommessa è che non è così.

1

È possibile utilizzare insieme il servizio di localizzazione standard e il servizio di cambio di posizione significativo. Citazione di the API Reference:

Se entrambi i servizi di localizzazione sono attivati ​​contemporaneamente, offrono eventi utilizzando lo stesso set di metodi delegato.

Un buon motivo per utilizzare entrambi è che il servizio standard offre una maggiore precisione, mentre il servizio di cambio di posizione significativo funziona anche quando l'app è sospesa.