我遇到了 Firebase 離線功能的一個很棒的功能。在初始化 Firebase 后,我只需在 main.dart 檔案中撰寫一行代碼,就將它集成到我的應用程式中await FirebaseDatabase.instance.setPersistenceEnabled(true);
問題 1:
我無法理解該database.keepSynced(true)功能,因為如果不使用這行代碼,我的應用程式會保留舊的以及獲取新的更新資料,那么這到底是做什么的?
問題 2:
當用戶離線時如何防止寫操作,因為我讀到在啟用持久性后,它會創建一個寫操作佇列并在用戶上線時更新它們,那么我該如何阻止呢?
問題3:
這個持久性功能是否也可以在IOS設備中使用,還是需要先進行一些權限設定?
謝謝
uj5u.com熱心網友回復:
當您打電話時,FirebaseDatabase.instance.setPersistenceEnabled(true)您允許 Firebase 在設備上創建一個本地檔案,它會在其中保留最近讀取的所有資料,以及設備離線時待處理的所有寫入。
當您呼叫keepSynced(true)一個節點時,您是在告訴 SDK 始終保持該節點同步。它本質onValue上在節點上創建了一個偵聽器,沒有任何處理程式代碼,因此您這樣做純粹是為了在設備離線時保持資料同步。
通過與 結合keepSynced(true),setPersistenceEnabled(true)您可以指定您希望應用程式在重新啟動后離線時繼續作業,以及為此需要哪些資料。
如果您呼叫keepSynced(true)資料庫的根目錄,您就是在告訴 SDK 將資料庫中的所有資料同步到磁盤快取。雖然這最初可能是讓您的應用程式作業的離線模式的快速方法,但當您有更多人開始使用您的應用程式時,它通常不會擴展。
如果您只想在客戶端與資料庫后端建立連接時允許寫入操作,您可以向.info/connected節點注冊一個本地偵聽器,該偵聽器true在有連接時為一個值,false否則為一個值。
請注意,Firebase 不需要這樣做,因為它將掛起的寫入排隊并在連接恢復時執行它們。一般來說,我建議在這里使用系統而不是反對它,并嘗試讓您的應用程式在離線場景中正常運行。在許多情況下,應用離線時無需禁用功能。
離線磁盤持久性在 Android 和 iOS 上可用,但在 Web 上不可用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425739.html
標籤:火力基地 扑 firebase-实时数据库 缓存
上一篇:引數型別“Future<QuerySnapshot<Map<String,dynamic>>>”不能分配給引數型別“Future<DocumentSnapsh
