Надежное получение сообщений — наиболее важная функция любого обмена сообщениями в Android. Также важно реализовать обмен сообщениями с учетом работоспособности системы и времени автономной работы. В этом документе описаны ключевые стратегии и инструменты, которые помогут вашему Android-приложению получать сообщения последовательно, эффективно и надежно.
Механизмы доставки сообщений
Лучший подход к надежному обмену сообщениями зависит от конкретных требований вашего приложения. Учитывайте такие факторы, как:
- Текущие потребности в режиме реального времени
- Частота сообщений
- Ограничения по батарее
Обмен сообщениями в реальном времени на переднем плане
Когда ваше приложение находится на переднем плане, пользователь обычно ожидает достаточно большого объема информации и хочет знать такие вещи, как:
- Присутствует ли человек, которому отправляется сообщение, на своем устройстве?
- Они печатают?
- Они прочитали сообщение?
Типичный способ поддержки такого обмена данными в реальном времени — использование протокола клиент-сервер, такого как WebSockets . WebSockets обеспечивают постоянную полнодуплексную связь между вашим приложением и сервером. Библиотека OKHTTP включает реализацию протокола WebSocket , которую вы можете использовать в своем клиенте Android.
База данных Firebase Realtime предоставляет готовый бэкэнд и клиентский интерфейс, которые могут обрабатывать такого рода коммуникации от вашего имени. Он использует внутренние WebSockets для связи в реальном времени между клиентом и сервером.
Фоновый обмен сообщениями в режиме реального времени
Когда ваше приложение больше не находится на переднем плане, очень важно избегать действий, которые отрицательно влияют на работоспособность системы и срок службы батареи. Поскольку по-прежнему важно надежно доставлять уведомления о сообщениях, мы рекомендуем использовать Firebase Cloud Messaging (FCM) .
FCM — это кроссплатформенное решение для обмена сообщениями, которое эффективно отправляет уведомления и сообщения с данными на устройства Android (и другие). Он использует транспортный уровень Android (ATL) для устройств, на которых есть службы Google, поэтому ваше приложение может получать уведомления об изменениях, когда оно больше не работает. Своевременность доставки сообщений зависит от состояния устройства, приоритета сообщения и наличия ограничений на ваше приложение из-за режима сна или режима ожидания .
Повышение надежности доставки сообщений
Чтобы сделать доставку сообщений еще более надежной, рассмотрите следующие стратегии:
- Используйте
WorkManager
, чтобы периодически выводить приложение из спящего режима и проверять наличие новых сообщений, когда устройство подключено к сети и (в идеале) когда устройство подключено к зарядному устройству. - Получите представление о доставке FCM с помощью таких инструментов, как консоль Firebase и показатели доставки Android SDK из API данных FCM .
- Используйте механизмы и инструменты ведения журналов, такие как Firebase Crashlytics, для мониторинга и устранения проблем с доставкой сообщений.