Метод обновления в реальном времени, отличный от push-уведомлений firebase, для моего мобильного приложения flutter
Я использовал fcm push-уведомления для получения обновлений в реальном времени (обновления в моем устройстве, т.е. выключен ли свет вручную или включен в устройстве и т.д.) происходят в мобильном приложении.Но push-уведомления иногда отсутствуют и мое приложение начало показывать проблемы синхронизации с реальным временем. Мне будет очень полезно, если кто-нибудь сможет предложить лучший метод для реализации этого процесса. Я слышал о включении сокетного соединения, но не знаю многого об этом. Спасибо
Облачный обмен сообщениямиFCM не предназначен для работы в режиме реального времени из-за таких вещей, как отключение от сети или отключение уведомлений на устройстве. Но он продолжает попытки до тех пор, пока сообщение не будет доставлено. (Например, при восстановлении сетевого соединения).
Вот некоторые идеи:
1 Квитанции о доставке
Вы можете попробовать проверить, все ли сообщения FCM получены, но это может зависеть от платформы.
Firebase Cloud Messaging - Определение статуса доставки для конкретного сообщения push-уведомления
Это может показать, что не все сообщения получены, что может быть проблемой в том, как вы используете firebase. Или, возможно, сообщения доставляются, но не перехватываются правильно, что может быть связано с вашим кодом.
2 Сокеты, но только пока ваше приложение открыто.
Сокеты - это замечательно, но они требуют присутствия в сети. Пока сокет открыт, вы можете быть уверены, что сообщения отправляются.
Но сокеты, вероятно, требуют, чтобы ваше приложение было открыто. Существуют фоновые сокеты, но я не знаю, насколько хороша их поддержка во flutter. См. https://blog.codemagic.io/flutter-ui-socket/
3 Используйте cloud-firestore или базу данных реального времени, затем синхронизируйте при следующем открытии приложения.
Ваши сообщения об обновлениях можно кэшировать или регистрировать в чем-то вроде cloud_firestore. А затем, когда вы входите в систему, хранилище данных может быть синхронизировано с вашим устройством.
Если вам нужно, чтобы что-то работало в фоновом режиме, то, возможно, посмотрите на этот вопрос: Как создать фоновый сервис Flutter, который работает и при закрытом приложении