Как заблокировать пользователей по версии приложения в Firebase - PullRequest
0 голосов
/ 20 мая 2018

У меня есть приложение для Android, которое использует Firebase для общего чата.Пользователи вводят свой ник и начинают общаться.

Нет проблем с реализацией, мое приложение работает хорошо.Но проблема в использовании данных.Использование данных было слишком высоким из-за неправильной реализации.

в версии приложения 14

Я извлекал все данные в чате, а затем отображал последние 100. Эта ситуация приводит к высокому использованию в базе данных firebase.Для пользователей 2К ежедневно загружалось 1-2 ГБ.На самом деле это должно быть меньше.

Затем неделю назад я выучил limitToLast (x) функцию.

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

Тогда ярешил обновить мое приложение.

в версии приложения 15

Я добавил функцию limitToLast (100) в необходимые строки в моем коде.Теперь нет никаких проблем для моих пользователей 15-вер.Ежедневное использование данных упало до 100 МБ в день.

В последнее время мое использование данных возросло до 300-400 МБ, ежедневно.

Это потому, что вы знаете, что существуют сотни сайтов apk.

1- Эти сайты apk не всегда содержат последнюю версию.

2- Некоторые пользователи не обновляют мое приложение.

В результате есть некоторые пользователи, которые используют мое приложение ниже 15 версии.Эти пользователи вызывают проблемы с использованием данных, потому что в версии 14 код был проблематичным и вызывал high проблему с использованием данных.

Как я могу заблокировать этих пользователей в 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 голосов
/ 20 мая 2018

Невозможно передавать такую ​​информацию с каждым запросом в базу данных.

Самая близкая вещь, о которой я могу подумать, это установить ее как пользовательскую заявку для пользователя, которая равна , передаваемой базе данных и правилам безопасности.Но один пользователь может использовать разные версии приложения на разных устройствах, поэтому сопоставление не будет работать правильно.

Лучшим способом было бы иметь один узел с минимальной клиентской версией (или, если выхочу: версия модели данных) в базе данных:

minimumClientVersion: 15

Затем, когда приложение запускается, прочитайте это число, проверьте его по версии приложения и скажите пользователю, чтобы обновление его приложения нев курсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...