Синхронизация фоновых данных Firebase

android firebase-realtime-database

1148 просмотра

1 ответ

109 Репутация автора

У меня есть приложение-будильник на базе Android GCM, которое отлично подходит для нашего конкретного промышленного применения.

Вот как это работает сейчас: внутренняя система отправляет сообщение GCM на телефон. BroadcastReceiver запускает активность будильника, которая отменяет настройки громкости, воспроизводит будильник, включает подсветку, отображает полноэкранный пользовательский интерфейс поверх экрана блокировки и связывается (через GCM в восходящем направлении) с внутренней частью, когда сигнал тревоги отключен. Телефон может быть перезапущен, приложение не запускается пользователем, и Будильник все равно будет запущен, когда серверная часть нажмет сообщение GCM.

Вопрос проектирования программирования: как правильно заменить его на Firebase?

Подходы, которые я опробовал:

  • Просто замените GCM на FCM (без использования базы данных Firebase Realtime)
  • Запустите службу при загрузке (и в onCreate), которая хранит ссылку на базу данных Firebase Realtime. ( https://gist.github.com/vikrum/6170193 )

Оба эти подхода работают. Конечно, заменить GCM на FCM просто. Является ли сохранение ссылки Firebase в Сервисе правильной архитектурой для обработки Тревоги? Не чувствует себя хорошо.

Я еще не закодировал keepSynced(true). Возможно, это то, что я должен использовать. Я ищу проект, который использует синхронизацию данных Firebase вместо того, чтобы иметь дело непосредственно со слоем FCM RemoteMessageBuilder - я смогу удалить большую часть кода XMPP, службы Windows и т. Д.

Как правильно реализовать мой будильник с помощью Firebase?

Автор: Ayyrk Источник Размещён: 18.07.2016 06:43

Ответы (1)


1 плюс

109 Репутация автора

Решение

Это руководство Дуга Стивенсона о Quora - лучшее, что я нашел:

Большая разница между Firebase Cloud Messaging и Firebase Realtime Database заключается в следующем: с помощью обмена сообщениями вы сможете выводить устройство из спящего режима, даже когда приложение не запущено. База данных может получать обновления только для зарегистрированных слушателей, пока приложение работает в данный момент и если устройство не находится в режиме ожидания (для Android M).

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

Используйте Cloud Messaging в тех случаях, когда вы не знаете, есть ли пользователь в вашем приложении, но вы хотите включить его в свое приложение (или заставить приложение делать что-то в определенный момент, который вы решите).

Сообщения также имеют очень ограниченные размеры полезной нагрузки (4 КБ). С базой данных вы можете читать сколько угодно с любого узла в вашей структуре.

Я говорю здесь в общем смысле для всех Android, iOS и Chrome. У каждой платформы свои особые способы обработки сообщений, но семантика схожа.

Автор: Ayyrk Размещён: 19.07.2016 01:16
Вопросы из категории :
32x32