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