Я использую прослушиватели событий Firestore https://developers.google.com/android/reference/com/google/firebase/firestore/DocumentReference.html#addSnapshotListener(com.google.firebase.firestore.EventListener%3Ccom.google.firebase.firestore.DocumentSnapshot%3E) для отображения уведомлений в NotificationManager.Но в режиме Doze уведомления задерживаются примерно на 10-15 минут.Верно ли мое понимание того, что Firestore использует что-то вроде сообщений с обычным приоритетом FCM для синхронизации данных, что приводит к зависанию слушателей?
В соответствии с моими требованиями мне нужно показывать уведомления как можно скорее (приложение представляет собой своего рода POS) и 10 минут - это слишком долго.
Я хотел бы спросить, возможен ли следующий подход: я планирую использовать облачные функции Firebase, запускаемые при изменениях в Firestore (пример Google для Datastore, верно ли это для Firestoreтоже?) и отправит клиенту сообщение с высоким приоритетом FCM, после чего будет показано уведомление.Верно ли мое предположение, что прослушиватели Firestore на клиенте будут обновлены тогда, так как устройство проснулось от сообщения с высоким приоритетом?
Я планирую отложить сообщения FCM примерно на 30 секунд, чтобы обработать изменения в пакете.Слушатели отправят в базу данных Firestore последний раз, когда они были активированы, и облачная функция Firestore проверит, не были ли вызваны прослушиватели клиента в течение некоторого времени (30 секунд) и существуют ли изменения, затем будет отправлено сообщение с высоким приоритетом FCM.
Я волнуюсь, если я не "изобретаю колесо", поскольку случай использования, кажется, довольно распространен.Есть ли лучшее решение?Для моего подхода мне придется хранить таблицу с записями для каждого подключенного устройства, которая в целом может быть большой.И самое главное, что это идет вразрез с «смыслом» Firestore - все уроки Google говорят, как здорово просто регистрировать слушателей и получать мгновенные обновления (и это работает умно, я согласен, по крайней мере, для изменений пользовательского интерфейса, которые, очевидно, не важны для режима ожидания,черный экран) для уведомлений в строке состояния (когда пользователь ожидает уведомления по звуку и т. д.) Мне все равно придется использовать push-уведомления FCM.
Если пойти дальше, я могу добавить соответствующую полезную нагрузку в сообщения, чтобы получать обновлениябез слушателей, и тогда какое удовольствие вообще использовать слушателей?Если это правильно, то Firestore, кажется, не так хорош, как он продает, по крайней мере, в моем случае, когда задержка режима Doze имеет значение ...
Пожалуйста, советуйте, может быть, кто-то уже имел дело с таким использованиемкейс и Firestore.