[英]How to block users by app version in Firebase
我有一個 Android 應用程序,它使用 Firebase 作為一般聊天室。 用戶輸入他們的昵稱並開始聊天。
實施沒有問題,我的應用程序運行良好。 但問題在於數據使用。 由於實施錯誤,數據使用率過高。
在應用程序版本 14 中
我正在獲取聊天室中的所有數據,然后顯示最后 100 個。這種情況導致 firebase 數據的高使用率。 2k 用戶每天有 1-2GB 的下載使用量。 實際上應該更少。
然后,一周前,我學習了limitToLast(x) function。
https://firebase.google.com/docs/database/admin/retrieve-data
然后我決定更新我的應用程序。
在應用程序版本 15 中
我將limitToLast(100) function 添加到代碼中的所需行。 現在,我的 15-ver 用戶沒有問題。 每日數據使用量下降到每天 100MB。
最近,我的數據使用量上升到每天 300-400MB。
這是因為您知道有數百個 apk 站點。
1- 這些 apk 站點並不總是包含最新版本。
2-有些用戶不更新我的應用程序。
結果,有一些用戶使用我的 15 版本以下的應用程序。 這些用戶導致數據使用問題,因為在版本 14 中代碼有問題並導致高數據使用問題。
firebase 的這些用戶怎么用規則屏蔽?
現在是這樣的:
{
"rules": {
".read": true,
".write": true
}
}
我想要這樣的代碼:
{
"rules": {
".read": "if app version is greater than 14",
".write": "if app version is greater than 14"
}
}
我可以用規則來做嗎? 我能怎么做? 如果不是,有沒有其他方法可以阻止使用低版本的用戶。
無法將此類信息與每個請求一起傳遞到數據庫。
我能想到的最接近的事情是將其設置為用戶的自定義聲明,將其傳遞給數據庫和安全規則。 但是單個用戶可能在不同設備上使用不同版本的應用程序,因此映射將無法正常工作。
最好的方法是在數據庫中擁有一個具有最低客戶端版本(或者如果你想要:數據模型的版本)的單個節點:
minimumClientVersion: 15
然后當應用程序啟動時,讀取這個數字,檢查應用程序版本,並告訴用戶升級他們的應用程序不是最新的。
根據實時數據庫模式版本阻止對數據庫的訪問的一種方法是擁有一個具有數據庫模式版本的根節點。 例如:/v3/users、/v3/messages...等
這樣,只有具有良好數據庫版本的應用程序調用實時數據庫的版本才能訪問數據庫。
但這是您在發現此問題之前應該實施的事情。
我會在應用程序啟動時實施檢查應用程序版本例程。 如果應用程序版本低於所需版本(這只是一個遠程配置字符串參數),那么我會顯示一個只有升級按鈕的視圖 + 說明他們需要升級的說明。 無法關閉視圖。
Ofc。 您無法聯系到當前用戶,但及時或在 7 天內大多數人已升級到應用程序的更新版本:問題逐漸消失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.