#firebase #flutter #google-cloud-firestore
#firebase #флаттер #google-облако-firestore
Вопрос:
В моем приложении я прослушиваю запрос Firestore всякий раз, когда пользователь входит в систему. После того, как приложение некоторое время работает в фоновом режиме, прослушиватель отменяется, и клиент не получает уведомлений о каких-либо новых изменениях.
Как я узнаю, был ли слушатель отменен SDK? Как правильно с этим справиться?
Ответ №1:
В большинстве операционных систем это делается автоматически самой системой, чтобы сохранить время автономной работы. Возможно ли обнаружить эту ситуацию и как, зависит от ОС.
В большинстве случаев лучше полагаться на другой механизм доставки обновлений в приложение, которое активно не используется, например, Firebase Cloud Messaging, который вы можете вызвать, например, из облачных функций для доставки сообщений в фоновые приложения. Пример этого см. В Документации Firebase по уведомлению пользователей, когда происходит что-то интересное.
Комментарии:
1. Большое спасибо, Фрэнк, за ваш ответ! В настоящее время моя основная проблема заключается в том, что, когда пользователи возвращаются в приложение, прослушиватель молча был убит, и я бы показывал устаревшие данные. Итак, должен ли я снова регистрировать прослушиватель (и отключать предыдущий) всякий раз, когда приложение возвращается из фонового режима? Это похоже на то, что должен делать Firestore SDK. Кто-нибудь обращался к вам с запросом на эту функцию?
2. Возможно, вам захочется проверить, действительно ли прослушиватель отключен, или для него срабатывает прослушиватель сбоев. Если это действительно происходит тихо, я думаю, вам нужно будет обнаружить восстановление приложения и повторно подключить слушателей. Обычно это должно происходить автоматически, если вы подключаете своих слушателей к событию жизненного цикла, такому как
onResume
(и, таким образом, удаляете ихonPause
).