Нужны ли мне сообщения с высоким приоритетом FCM для отправки изменений в прослушиватели Firestore в режиме Doze? - PullRequest
0 голосов
/ 22 октября 2018

Я использую прослушиватели событий 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.

1 Ответ

0 голосов
/ 22 октября 2018

Правильно ли я понимаю, что Firestore использует что-то вроде сообщений обычного приоритета FCM для синхронизации данных, вызывая остановку слушателей?

Firestore не использует FCM длясинхронизация данных.У него есть собственный проводной протокол, отдельный от FCM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...