2016-01-21 43 views
8

有沒有辦法使用iOS SDK手動並立即刷新Firebase緩存來下拉最新數據(假設您在線)?例如,如果我對Firebase上的數據進行了一些更改,我希望我的應用立即反映出來,但是在持續打開的情況下,通常需要重新啓動應用。立即刷新Firebase iOS SDK緩存

我最近啓用了持續在我的應用程序,像這樣:

Firebase.defaultConfig().persistenceEnabled = true 

這偉大的工作,但現在我的應用程序甚至沒有與互聯網連接刷新它的數據非常頻繁。我正在使用提到here的離線功能。

+2

「持續打開,通常需要重新啓動應用程序」這不應該發生,除非使用'observeSingleEventOfType'。由於'observeSingleEventOfType'會立即觸發緩存版本,因此永遠不會獲得新版本。解決方案是不使用'observeSingleEventOfType'和'persistenceEnabled = true'。 –

+2

爲確保緩存自動更新,請調用'[ref keepSynced:YES];'。 https://www.firebase.com/docs/ios/guide/offline-capabilities.html#section-prioritizing-the-local-cache –

+0

因此,根據你的第一個評論,即使'keepSynced'不會工作,如果我' m使用'observeSingleEventOfType'? – tfrank377

回答

8

我曾與持久性同樣的問題,這裏有兩種選擇解決它:

1)繼續使用observeSingleEventOfType但設置ref.keepSynced(true)。這不會監聽數據中發生的變化,但一旦執行此代碼,它就會刷新數據。我爲常見問題部分選擇了此選項,只需在屏幕打開時更新一次(viewDidLoad)。

2)使用​​3210。這將始終保持您的數據同步,並會在您的數據更改後立即重新執行。

+0

這對我的iPhone 7+很好,但不是在我的iPhone 5s上,但運行iOS 10 ...什麼可能是不工作iPhone 5s的原因?不工作意味着「即時」響應丟失,但服務器始終發出呼叫 – swalkner

+0

非常感謝Raphael –