2016-01-21 8 views
8

C'è un modo per aggiornare manualmente e immediatamente la cache di Firebase, utilizzando l'SDK di iOS, per visualizzare gli ultimi dati (supponendo che tu sia online)? Ad esempio, se ho apportato alcune modifiche ai miei dati su Firebase, voglio che la mia app lo rispecchi immediatamente, ma con la persistenza attivata, di solito sono necessari alcuni riavvii dell'applicazione.Aggiorna subito la cache dell'SDK di Firebase iOS

Recentemente ho acceso la persistenza nella mia app in questo modo:

Firebase.defaultConfig().persistenceEnabled = true 

ha funzionato grande, ma ora la mia app non si aggiorna IT di dati molto spesso anche con una connessione ad internet. Sto utilizzando le funzionalità offline menzionate here.

+2

"con la persistenza attivata, di solito ci vogliono alcuni riavvii dell'app" Questo non dovrebbe accadere, a meno che non si usi 'observeSingleEventOfType'. Poiché 'observSingleEventOfType' verrà attivato immediatamente per la versione memorizzata nella cache, non otterrà mai la nuova versione. La soluzione è di non usare sia 'observSingleEventOfType' e' persistenceEnabled = true'. –

+2

Per garantire che la cache venga aggiornata automaticamente, chiamate '[ref keepSynced: YES];'. https://www.firebase.com/docs/ios/guide/offline-capabilities.html#section-prioritizing-the-local-cache –

+0

Quindi, secondo il tuo primo commento, anche 'keepSynced' non funzionerebbe se io ' m usando 'observSingleEventOfType'? – tfrank377

risposta

8

Ho avuto lo stesso problema con la persistenza e qui ci sono due opzioni risolverlo:

1) continuare ad usare observeSingleEventOfType ma l'impostazione ref.keepSynced(true). Questo non ascolterà i cambiamenti che si verificano nei tuoi dati ma aggiorna i dati una volta eseguito questo codice. Ho scelto questa opzione per la mia sezione FAQ che deve essere aggiornata una volta quando lo schermo è aperto (viewDidLoad).

2) Utilizzare observeEventOfType. Ciò manterrà i tuoi dati sempre sincronizzati e verrà eseguito di nuovo non appena i dati cambiano.

+0

funziona correttamente sul mio iPhone 7+, ma non sul mio iPhone 5s, ma con iOS 10 in esecuzione ... potrebbe essere la ragione per non lavorare su iPhone 5s? Non funziona significa che manca la risposta "immediata" ma la chiamata al server viene sempre effettuata – swalkner

+0

Grazie mille Raffaello –