Прослушиватель Firestore убит, когда приложение долгое время работает в фоновом режиме

#firebase #flutter #google-cloud-firestore

#firebase #флаттер #google-облако-firestore

Вопрос:

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

Как я узнаю, был ли слушатель отменен SDK? Как правильно с этим справиться?

Ответ №1:

В большинстве операционных систем это делается автоматически самой системой, чтобы сохранить время автономной работы. Возможно ли обнаружить эту ситуацию и как, зависит от ОС.

В большинстве случаев лучше полагаться на другой механизм доставки обновлений в приложение, которое активно не используется, например, Firebase Cloud Messaging, который вы можете вызвать, например, из облачных функций для доставки сообщений в фоновые приложения. Пример этого см. В Документации Firebase по уведомлению пользователей, когда происходит что-то интересное.

Комментарии:

1. Большое спасибо, Фрэнк, за ваш ответ! В настоящее время моя основная проблема заключается в том, что, когда пользователи возвращаются в приложение, прослушиватель молча был убит, и я бы показывал устаревшие данные. Итак, должен ли я снова регистрировать прослушиватель (и отключать предыдущий) всякий раз, когда приложение возвращается из фонового режима? Это похоже на то, что должен делать Firestore SDK. Кто-нибудь обращался к вам с запросом на эту функцию?

2. Возможно, вам захочется проверить, действительно ли прослушиватель отключен, или для него срабатывает прослушиватель сбоев. Если это действительно происходит тихо, я думаю, вам нужно будет обнаружить восстановление приложения и повторно подключить слушателей. Обычно это должно происходить автоматически, если вы подключаете своих слушателей к событию жизненного цикла, такому как onResume (и, таким образом, удаляете их onPause ).