我有一个将 Firebase 用于一般聊天室的 Android 应用。用户输入他们的昵称并开始聊天。
实现没有问题,我的应用程序运行良好。但问题在于数据使用。由于执行错误,数据使用率过高。
在应用程序版本 14
我正在获取聊天室中的所有数据,然后显示最后 100 个。这种情况导致 Firebase 数据的使用率很高。 2k 用户每天有 1-2GB 的下载使用量。实际上应该更少。
然后,一周前,我学会了 limitToLast(x) 功能。
https://firebase.google.com/docs/database/admin/retrieve-data
然后我决定更新我的应用程序。
在应用程序版本 15
我添加了 limitToLast(100) 函数到我的代码中的所需行。
现在,我的 15 版用户没有问题。每日数据使用量降至每天 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
然后当应用程序启动时,读取这个数字,检查应用程序版本,并告诉用户升级他们的应用程序不是最新的。
关于android - 如何在 Firebase 中按应用版本阻止用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429782/