4

我在我的應用中使用Firebase實時數據庫。它運行得非常好,我對此非常滿意。但最近我遇到了一個邊緣案例,因爲我的一些用戶正在丟失他們的數據。在離線模式下Firebase實時數據庫不一致的行爲

場景#1

用戶登錄到應用程序(火力地堡驗證)與互聯網連接,並且一些數據添加到數據庫中。

用戶使用登錄網絡連接,然後再次登錄,並且以前存儲的數據與預期一致。互聯網連接可用,數據已同步到服務器。

場景#2

現在用戶關閉他/她的互聯網連接。當互聯網連接關閉時,向數據庫添加更多數據並註銷應用程序。

現在用戶再次打開他/她的互聯網連接,並以與上述完全相同的方式登錄到應用程序。

現在用戶在應用處於離線模式時看不到任何數據。我有setPersistenceEnabled(true),它在正常情況下完美運行。

的問題

的問題是,當用戶在離線模式下持續失敗,一些數據添加到數據庫中(不同步到服務器,因爲沒有互聯網),並在標誌出離線模式本身,然後再次登錄。

這是一個邊緣案例,但我的一些用戶遇到了這個問題,並因此bug而丟失了寶貴的數據。如何解決這個問題?它是Firebase數據庫的默認行爲嗎?如果是這樣,是否有任何解決方法?

+0

任何人有任何想法如何解決這個問題? –

回答

1

通過我的應用程序,它的工作原理就是如此。

從火力地堡文檔 https://firebase.google.com/docs/database/android/offline-capabilities

... 如果我們的應用程序使用火力地堡認證,客戶端將持續跨越重啓用戶的身份驗證令牌。如果身份驗證令牌在我們的應用程序處於脫機狀態時到期,則客戶端將暫停我們的寫入操作,直到我們重新進行身份驗證,否則我們的寫入可能會因安全規則而失敗。 ..

這意味着,如果您在登錄時登出應用程序,應用程序不會同步登錄前驗證的條目。

只有選項是不脫機註銷。

+0

是的,這是一個解決方案。但是,隨着用戶脫機並且在此期間投入了大量數據,它仍然不夠完美。現在他很快打開互聯網並註銷。他做到這一點足以讓Firebase獲得新的身份驗證令牌並將數據同步到服務器。問題仍然存在。有沒有辦法在簽出之前強制同步所有數據? –

+0

我覺得沒有。如果互聯網離線,您既不能同步也不能進行身份驗證。我有同樣的問題。可能是Firebase的下一個版本來解決。閱讀答案在http://stackoverflow.com/questions/38281761/clear-firebase-persistence-after-logout – eurosecom

+0

我知道離線時無法同步。當互聯網可用時,是否有強制同步所有數據的方法,以便在登出前我可以強制同步所有數據並確保互聯網也可用。 –