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

nx7onnlm  于 2022-11-20  发布在  Android
关注(0)|答案(3)|浏览(122)

我有一个Android应用程序,使用Firebase进行一般聊天室。用户输入他们的昵称,开始聊天。
实现没有问题,我的应用程序运行良好。但问题是数据使用。数据使用太高,因为错误的实现。

在应用程序版本14中

我在聊天室里抓取所有的数据,然后显示最后100个。这种情况导致了firebase数据的高使用率。每天有1-2GB的下载使用量给2k的用户。事实上它应该更少。
于是,一个星期前,我学会了**limitToLast(x)**函数。
https://firebase.google.com/docs/database/admin/retrieve-data
然后我决定更新我的应用程序。

在应用程序版本15中

我在代码中添加了**limitToLast(100)**函数。现在,我的15-ver用户没有问题了。每天的数据使用量下降到100 MB。
最近,我的数据使用量上升到300- 400 MB,每天。
这是因为你知道有数以百计的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"
  }
}

我可以通过规则来阻止用户吗?我该怎么做?如果不能,是否有其他方法来阻止使用低版本的用户。

8yoxcaq7

8yoxcaq71#

没有办法将此类信息随每个请求一起传递到数据库。
我能想到的最接近的方法是将其设置为用户的自定义声明,并将其传递给数据库和安全规则。但单个用户可能在不同的设备上使用不同版本的应用,因此Map将无法正常工作。
最好的方法是使用最低客户端版本的单个节点(或者,如果您希望:数据模型的版本):

minimumClientVersion: 15

然后,当应用程序启动时,读取此数字,根据应用程序版本进行检查,并告诉用户升级他们的应用程序不是最新的。

vq8itlhq

vq8itlhq2#

根据实时数据库方案版本阻止对数据库的访问的一种方法是使用具有数据库方案版本的根节点。例如:/v3/用户、/v3/消息...等
这样,只有调用实时数据库且数据库版本良好的应用版本才能访问数据库。
但在发现这个问题之前,您应该实现这一点。

w8ntj3qf

w8ntj3qf3#

我会在应用程序启动时实现一个检查应用程序版本的例程。如果应用程序版本低于所需的版本(这只是一个远程配置字符串参数),那么我会显示一个视图,只有一个升级按钮+一个说明,说明他们需要升级。视图不能被关闭。
你不能达到目前的用户在那里,但在时间或在7天内大多数人已经升级到一个较新版本的应用程序:问题会逐渐消失。

相关问题