android - 如何在 Firebase 中按应用版本阻止用户

标签 android firebase firebase-realtime-database firebase-authentication

我有一个将 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/

相关文章:

swift - 在 swift 中,如何使函数从 Firebase 返回查询快照?

java - 如何访问(修改、添加元素)到 java 内部类中的 ArrayList/Collection?

android - Firebase 产品是否已为 100% 离线应用做好准备?

javascript - 动态更新 ref Vuejs 和 Vuefire

ios - 显示在 JSQMessagesViewController 中发送的视频的图像预览

javascript - 从 Firebase 数据库中的两个 Promise 获取结果

android - 前置摄像头 - 保存前正确镜像和旋转

android - 编辑文本格式

android - 如何卸载旧版本的android sdk构建工具?

android - 如何在android中获取google plus的刷新 token ?