簡體   English   中英

離線用戶可以在Firebase Realtime數據庫中執行特定於其uid的數據庫事務嗎?

[英]Can an offline user carry out database transactions specific to their uid in Firebase Realtime Database?

情況:

用戶在沒有互聯網連接的情況下啟動應用程序。 我嘗試在啟動活動中匿名認證它們,並在具有以下規則結構的數據庫中執行對引用'/ users / $ uid'的數據庫寫操作:

{
  "rules": {
    "users": {
      "$user_id": {
        ".write": "$user_id === auth.uid",
        ".read": "$user_id === auth.uid"
      }
    }
  }
}

因此,如果發生這種情況,並且用戶隨后聯機,則實際上將執行排隊的數據庫事務-還是我需要手動重新進行身份驗證並重試數據庫事務?

我不確定如果用戶處於脫機狀態是否會生成用於匿名身份驗證的uid ,所以我認為數據庫引用無法解析。

參考鏈接:

https://firebase.google.com/docs/auth/android/anonymous-auth https://firebase.google.com/docs/database/android/offline-capabilities

我會將數據保存在sharedpreferences或本地DB中(取決於要保存的數據類型)。

之后,要么啟動后台服務並嘗試每10分鍾連接到您的實時數據庫,要么您希望用戶下次打開該應用程序並檢查是否需要檢查身份驗證。

對於后台服務,我建議使用AlarmManger。

因此,在測試之后,我發現:

  • 如果用戶最初沒有連接,則在重新啟動之間不能依賴uid
  • 本地執行的數據庫事務(因為您具有setPersistence(true))將與遠程排隊,並與遠程同步,無論用戶是否具有連接性,但如果使用的DatabaseReference包含對當前用戶uid的引用,則不會進行同步,因為重新啟動之間不能依賴(例如在問題描述的方案中)。

為了解決這個問題,我正在通過SharedPreferences使用本地存儲來獲取最基本的數據,並在實例化引用用戶uid的DatabaseReference之前等待連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM