2016-01-21 33 views
8

Czy istnieje sposób ręcznego i natychmiastowego odświeżenia pamięci podręcznej Firebase, używając zestawu SDK iOS, aby pobrać najnowsze dane (zakładając, że jesteś online)? Na przykład, jeśli wprowadziłem pewne zmiany w moich danych w Firebase, chcę, aby moja aplikacja natychmiast to odzwierciedliła, ale przy włączonym utrwalaniu trwa zwykle kilka ponownych uruchomień aplikacji.Odśwież Refresh Firebase iOS SDK cache natychmiast

Niedawno włączona wytrwałości w mojej aplikacji tak:

Firebase.defaultConfig().persistenceEnabled = true 

To działało świetnie, ale teraz moja aplikacja nie odświeżyć To dane bardzo często nawet z dostępem do Internetu. Używam funkcji trybu offline wymienionych here.

+2

"z włączonym utrwalaniem, zwykle trwa kilka restartów aplikacji" To nie powinno się zdarzyć, chyba że użyjesz 'observeSingleEventOfType'. Ponieważ 'observeSingleEventOfType' będzie natychmiast uruchamiać wersję buforowaną, nigdy nie dostanie nowej wersji. Rozwiązaniem jest nie używanie zarówno 'observeSingleEventOfType' i' persistenceEnabled = true'. –

+2

Aby upewnić się, że pamięć podręczna zostanie automatycznie zaktualizowana, wywołaj polecenie "[ref keepSynced: YES];". https://www.firebase.com/docs/ios/guide/offline-capabilities.html#section-prioritizing-the-local-cache –

+0

Więc według twojego pierwszego komentarza nawet "keepSynced" nie zadziała, gdybym " m za pomocą 'observeSingleEventOfType'? – tfrank377

Odpowiedz

8

miałem ten sam problem z uporem i tu są dwie opcje rozwiązywania go:

1) nadal korzystać observeSingleEventOfType ale ustawienie ref.keepSynced(true). To nie będzie nasłuchiwało zmian zachodzących w twoich danych, ale odświeży dane po wykonaniu tego kodu. Wybrałem tę opcję dla mojej sekcji FAQ, która musi zostać zaktualizowana tylko raz po otwarciu ekranu (viewDidLoad).

2) Użyj observeEventOfType. Dzięki temu dane będą synchronizowane i będą ponownie uruchamiane natychmiast po zmianie danych.

+0

działa to dobrze na moim iPhone 7+, ale nie na moim iPhone 5s, ale z systemem iOS 10 ... co może być powodem nie pracy na iPhone 5s? Nie działa oznacza, że ​​brakuje "bezpośredniej" odpowiedzi, ale wywołanie serwera jest zawsze wykonywane – swalkner

+0

Wielkie dzięki Raphael –