Firebase Offline Storage Advanced - ручная синхронизация и информация о ходе работы
У меня есть приложение, где основной функцией является "Автономное использование".
Мы создаем SQLite-Database на нашем сервере, что мы предоставляем в API для загрузки. Каждый раз, когда база данных изменилась, пользователям пришлось повторно загрузить полную базу данных SQLite (которая в настоящее время составляет 50 МБ и растет во времени).
Мы попытались улучшить Update-Method, который должен был загружать только файлы Difference-SQL, но есть некоторые проблемы (производительность, коррумпированные базы данных и т.д.).
Теперь выпущенная Firebase для Google, и я думаю, что пришло время заменить SQLite-System системой Firebase.
Но у меня есть некоторые мысли:
- Можно ли загрузить всю базу данных Firebase для автономного использования (не в кэше приложений в постоянном хранилище)?
- Можно ли отслеживать ход автономной синхронизации и предоставить пользователю параметр, если он хочет синхронизировать сейчас или позже?
- Можно ли ограничить синхронизацию только WIFI?
- Могу ли я предоставить базу данных Bundle - что после установки приложения я уже могу запросить данные офлайн-Firebase?
Я хочу: использование Firebase в моем приложении только для синхронизации баз данных - НО ВСЕ все операции отключены. Если Firebase не предназначен для использования, какая хорошая альтернатива?
Тогда у меня есть еще один главный вопрос относительно Firebase:
- JSON Storage - это здорово - но таким образом нам не нужна уникальная структура, мы должны обратить внимание на это, чтобы вставить всегда правильные наборы данных?
Ответы
Ответ 1
Можно ли загрузить всю базу данных Firebase для автономного использования (не в App-Cache, в постоянном хранилище)?
Да, вы можете сделать это, установив жесткость диска на true. Вам просто нужно ссылаться на самый высокий уровень в базе данных, и firebase вернет все дочерние узлы.
https://firebase.google.com/docs/database/android/offline-capabilities
Могу ли я отслеживать ход автономной синхронизации и предоставлять пользователю если он хочет синхронизировать сейчас или позже?
Я никогда не пытался показать фактический прогресс, однако, когда вы извлекаете данные из firebase, всегда существует метод onDataChange, который вызывается, когда вы успешно извлекаете данные.
https://firebase.google.com/docs/database/android/retrieve-data#read_data_once
Могу ли я ограничить синхронизацию только WIFI?
Я не видел этот вариант в документации Firebase, однако я не считаю, что было бы очень сложно реализовать
Можно ли доставить базу данных Bundle - после установки приложения я могу уже запрашивать данные офлайн-Firebase?
Вам нужно будет захватить данные из Firebase, как только будет установлено приложение. Вы также можете теоретически, когда приложение запускается сначала, попробуйте записать в базу данных Firebase без какой-либо сети, а затем эти данные могут быть доступны локально, однако вам нужно быть осторожным, как когда пользователь получает сетевое соединение, тогда эти данные могут быть перезаписаны данные в базе данных Firebase.
Как кэшировать данные Firebase для автономного использования?