Domanda

Ho un paio di domande su Core Location.

1) Se l'autorizzazione rifiuti utente per la mia app per posizione uso di base, o la posizione di base non è disponibile per qualche ragione, c'è un ripiego? (Dispositivo Locale, per esempio?)

2) Posso memorizzare nella cache la posizione di un dispositivo per la prossima volta? Fa Core Location fare questo stesso?

3) Ho davvero bisogno di tempo tramonto nella zona dell'utente durante la stagione a metà primavera e ho una funzione per fare che, una volta ho la latitudine e la longitudine del dispositivo. Forse posso solo fare una supposizione circa il tempo sulla base di impostazioni internazionali? (Esempio:. Negli Stati Uniti, assumere circa 19:00)

EDIT:

Io davvero sto cercando di calcolare il tramonto nella zona degli utenti per un app. Niente a che vedere con la mappa. Sto considerando la seguente sequenza di eventi:

  • Controlla Core Location disponibilità. Se sì, usarlo e conservarlo in NSUserPreferences. Se Core Location non è disponibile, passare alle fallback.
  • Verificare la presenza di una posizione memorizzata. Se è memorizzato, usarlo. In caso contrario, andare avanti ...
  • Verificare la presenza di tempo scelto per l'utente.
È stato utile?

Soluzione

1) A rigor di termini, se l'utente non consente l'utilizzo CoreLocation o, se l'autorizzazione è stata data, ma CoreLocation non è disponibile, non c'è altro di ripiego per ottenere la posizione dell'utente come latitudine, longitudine accoppiamento. Utilizzando il locale potrebbe non funzionare in tutti i casi. In primo luogo, sarà solo dare un'approssimazione che può essere troppo lontano dalla realtà. Tuttavia, sta a voi giudicare se questa approssimazione è ok per la vostra applicazione. Inoltre, ci sono alcuni utenti che utilizzano un diverso locale da quello relativo al loro paese. E, non avete alcuna garanzia che le persone che viaggiano all'estero potranno regolare la data / ora ogni volta.

2) Core Location memorizza per default l'ultima posizione recuperata dall'unità GPS. Tuttavia, per le persone che viaggiano all'estero questa posizione cache sarà certamente sbagliato (anche per le persone che viaggiano a poche miglia di distanza), e, in generale, si dovrebbe eliminare il valore memorizzato nella cache e localizzare nuovamente l'utente ogni volta. Capisco che per le persone che viaggiano all'interno del loro paese questo non (di solito) creare enormi problemi. Ma dipende solo paese: il viaggio in Italia non cambierà il tempo, ma viaggia attraverso gli Stati Uniti può cambiare il tempo fino a 3 ore.

3) Vorrei suggerire di provare a utilizzare Core Localizzazione e, in caso di problemi, è sufficiente chiedere all'utente di inserire il suo / la sua ora locale o la posizione (la città dovrebbe essere sufficiente per il vostro scopo). Se si sceglie di chiedere la posizione dell'utente, quindi è possibile ottenere la coppia latitudine / longitudine corrispondente, ma questo richiederà una connessione di rete funzionante.

Altri suggerimenti

2) Dalla documentazione online per CLLocationManager:

  

Il servizio di localizzazione restituisce un percorso iniziale più breve tempo possibile, restituendo informazioni memorizzate nella cache quando disponibile.

È possibile controllare il timestamp CLLocation per vedere se si tratta di un valore memorizzato nella cache o meno.

3) Se si decide di utilizzare impostazioni internazionali per approssimazione TZ iniziale, si ricordi che agli utenti di viaggiare, e non possono reimpostare loro locale prontamente. È possibile ottenere l'oggetto TZ corrente con:

[NSTimeZone localTimeZone]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top