如何在Firebase

时间:2018-05-19 21:51:49

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

我有一个Android应用程序,使用Firebase进行常规聊天室。用户输入他们的昵称并开始聊天。

实现没有问题,我的应用程序运行良好。但问题是关于数据使用。由于实施错误,数据使用率过高。

应用版本14中的

我在聊天室中获取所有数据,然后显示最后100个。这种情况导致firebase数据的高使用率。 2k用户每天下载1-2GB。事实上它应该更少。

然后,一周前,我学会了 limitToLast(x)功能。

https://firebase.google.com/docs/database/admin/retrieve-data

然后我决定更新我的应用程序。

应用版本15中的

我在代码中的必需行添加了 limitToLast(100)功能。 现在,我的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"
  }
}

我可以使用规则执行此操作吗?我能怎么做?如果不是,是否有其他方法可以阻止使用低版本的用户。

1 个答案:

答案 0 :(得分:2)

无法将每个请求的此类信息传递给数据库。

我能想到的最接近的事情是将其设置为用户的自定义声明, 传递给数据库和安全规则。但是单个用户可能在不同的设备上使用不同版本的应用程序,因此映射将无法正常工作。

最好的方法是在数据库中拥有一个具有最小客户端版本的单个节点(或者如果您需要:数据模型的版本):

cur.commit()

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