iphone - Simulazione delle modifiche alla posizione per "startMonitoringSignificantLocationChanges"




xcode4 ios-simulator core-location (4)

Sto scrivendo un'app per iPhone e utilizzo dei servizi di localizzazione. Sto usando il metodo CLLocationManager su CLLocationManager . (Come ho capito, questo è per i servizi di localizzazione a bassa potenza e bassa precisione.) Quando costruisco e lancio la mia app in iOS Simulator, la mia posizione viene corretta. Tuttavia, voglio simulare gli aggiornamenti della posizione oltre la correzione iniziale.

Ho notato queste due opzioni:

  • iOS Simulator: debug> menu Posizione
  • Xcode 4: Prodotto> Debug> Simula il menu Posizione

Entrambi funzionano in modo accettabile per simulare una correzione iniziale. (Ad esempio, scegli "Apple" dal primo, o "Mosca" dal secondo.) Tuttavia, le successive modifiche a uno di questi NON attivano un altro aggiornamento di posizione nell'app simulata.

Quello che desidero è ricevere una notifica quando la posizione simulata cambia quando si utilizza startMonitoringSignificantLocationChanges . (iOS Simulator genera una serie di aggiornamenti quando utilizzo invece startUpdatingLocation .) In questo modo è più semplice testare le applicazioni abilitate alla posizione senza portare il dispositivo sul campo.

Due domande:

  • Qual è la differenza tra questi due?
  • Come utilizzare iOS Simulator e / o Xcode 4 per simulare una serie di modifiche alla posizione?

Saluti.


Answers

FWIW, il monitoraggio di cambiamenti significativi della posizione è legato quasi esclusivamente alla triangolazione e al trasferimento delle celle. Il modo in cui questo viene gestito nel simulatore è probabilmente molto diverso da quello che sarebbe sul dispositivo. Anche il monitoraggio della regione ottiene il bonus aggiuntivo di Wifi e altre app che utilizzano la posizione per ottenere aggiornamenti più frequenti.

Immagino che questo sia esattamente il modo in cui funziona il simulatore, anche passando in luoghi molto distanti e che dovrebbero attivarsi logicamente, che semplicemente non è come vengono gestiti gli aggiornamenti. Nel simulatore non ci sono handoff di tower delle celle, quindi non c'è modo di testare realmente i cambiamenti significativi.


Per dare seguito a @ Nevan-king rispondi al motivo per cui non ci sono aggiornamenti quando usi startMonitoringSignificantLocationChanges

Vedi Apple Note per func startMonitoringSignificantLocationChanges()

Le app possono aspettarsi una notifica non appena il dispositivo si sposta di 500 metri o più dalla notifica precedente. Non dovrebbe aspettarsi notifiche più frequenti di una volta ogni cinque minuti . Se il dispositivo è in grado di recuperare i dati dalla rete, è molto più probabile che il responsabile della posizione invii le notifiche in modo tempestivo.


Se vuoi creare una traccia, puoi creare un file GPX con waypoint come questo:

<?xml version="1.0" encoding="UTF-8"?>
<gpx>
    <wpt lat="52.373" lon="4.871"></wpt>
    <wpt lat="52.374" lon="4.872"></wpt>
    <wpt lat="52.375" lon="4.871"></wpt>
</gpx>

Salvalo come track.gpx. Fai attenzione a non avere spazi bianchi all'inizio.

Quando costruisci ed esegui, c'è una barra nella parte inferiore di Xcode con una freccia di posizione (simile a quella degli iPhone). È per "Simulate Location". Clicca qui e carica il tuo file GPX. Quando la tua app è in esecuzione nel simulatore, il punto blu dovrebbe spostarsi. Non penso che ci sia un modo per controllare i tempi, quindi aggiorna la sua posizione ogni mezzo secondo circa.

La differenza che posso vedere nel menu Simulatore è che non puoi avere una traccia personalizzata, solo un punto personalizzato. Non so perché le opzioni dei menu sono diverse, a un certo punto probabilmente aggiungeranno un'opzione per una traccia personalizzata nel Simulatore.


In Xcode questo è chiamato "Code Sense". E queste icone esistono anche in Xcode 3. Queste icone sono anche utilizzate nella navigazione dei simboli.

Rosso : macro

  • = macro (pensa #define )

Brown : Core Data / namespace

  • = c modello mod
  • = m etodo modellato
  • = p roperty modellato

  • = C ++ n amespace

Arancione : tipi con alias

  • = Objective-C c ateory
  • = e num
  • = t ypedef / t ypealias
  • = Swift ex tension

Verde : variabili

  • = b inding
  • = unzione
  • = feld
  • = c onstant
  • = variabile d'oro
  • = IB O utlet
  • = v ariable (può essere ivar, var globale, var locale, ecc.)
  • = parametro (pensa a f (x) )

Blu : metodi

  • = IB A ction
  • = m ethod
  • = p roperty

Viola : tipi aggregati

  • = c lass (Objective-C, Swift o C ++)
  • = c lass e xtension
  • = Obiettivo-C / Swift pr otocol
  • = s truct
  • = u nione

Grigio : frammenti

  • = snippet

Icone : #pragma mark o commenti

  • = !!!: ...
  • = FIXME: ...
  • = ???: ...
  • = TODO: ...
  • = MARK: ...

Dovresti essere in grado di cercare i significati dai nomi di file di /Developer/Library/PrivateFrameworks/DVTFoundation.framework/Resources/Xcode.SourceCodeSymbolKind.*.Icon.tiff *.

Nelle versioni successive di Xcode, il percorso viene spostato in /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Resources/Assets.car , consultare Analisi del file Assets.car in IOS su come estrarre le immagini dal *. auto





iphone xcode4 ios-simulator core-location