我有一个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"
}
}
我可以使用规则执行此操作吗?我能怎么做?如果不是,是否有其他方法可以阻止使用低版本的用户。
答案 0 :(得分:2)
无法将每个请求的此类信息传递给数据库。
我能想到的最接近的事情是将其设置为用户的自定义声明, 传递给数据库和安全规则。但是单个用户可能在不同的设备上使用不同版本的应用程序,因此映射将无法正常工作。
最好的方法是在数据库中拥有一个具有最小客户端版本的单个节点(或者如果您需要:数据模型的版本):
cur.commit()
然后当应用程序启动时,请阅读此号码,根据应用程序版本进行检查,并告诉用户升级他们的应用程序不是最新的。