Android устройства не получают 5% о.е. sh отправлено с Firebase Cloud Messaging - PullRequest
5 голосов
/ 09 мая 2020

На приведенном ниже графике консоли Firebase Cloud Messaging (FCM) показано, что телефоны получают только ~ 95% нашего pu sh. Это вызывает у нас множество проблем, поскольку мы создаем приложение VoIP и нуждаемся в немедленном получении pu sh. Может ли кто-нибудь объяснить, почему это происходит и как приблизить этот показатель к 100%?

Некоторые важные примечания:

  • Все телефоны Android
  • Все На телефонах было открыто наше приложение в момент получения pu sh или до 2 минут до
  • Все pu sh - это данные pu sh (т.е. без тела / заголовка) с высоким приоритетом
  • PU sh отправляется с истечением 10 секунд для определения их приоритета после Android docs
  • У нас было ~ 30 ошибок (не зарегистрированный токен регистрации и внутренняя ошибка) при отправке pu sh за тот же период, что ничто по сравнению с ~ 500 недоставленными о.у. sh

Screenshot from FCM Console

Ответы [ 3 ]

3 голосов
/ 12 мая 2020

pir,

Насколько я понимаю, есть много причин, по которым сообщение может не быть доставлено. Я думаю, что, не глядя на ваши данные c, будет сложно дать окончательный ответ.

Я рекомендую вам потратить некоторое время на чтение Понимание доставки сообщений в документации Firebase. Хотя я рекомендую вам прочитать всю статью, особенно интересным для вас, вероятно, будет раздел Экспорт данных BigQuery . Это касается экспорта данных вашего сообщения в BigQuery. Данные, экспортируемые в BigQuery, рассматриваются в разделе Какие данные экспортируются в BigQuery? . Думаю, вас заинтересует поле event, которое содержит данные о типе произошедшего события. Эти типы событий включают:

  • MESSAGE_ACCEPTED: сообщение было получено сервером FCM и запрос действителен;
  • MESSAGE_DELIVERED: сообщение было доставлено в FCM SDK приложения на устройство. По умолчанию это поле не распространяется. Чтобы включить, следуйте инструкциям, приведенным в setDeliveryMetricsExportToBigQuery(boolean)).
  • MISSING_REGISTRATIONS: запрос был отклонен из-за отсутствия регистрации;
  • UNAUTHORIZED_REGISTRATION: сообщение было отклонено, потому что отправитель не авторизован для отправки на регистрацию;
  • MESSAGE_RECEIVED_INTERNAL_ERROR: при обработке запроса сообщения произошла неопределенная ошибка;
  • MISMATCH_SENDER_ID: запрос на отправку сообщения был отклонен из-за несоответствия между идентификатором отправителя, отправляющего сообщение, и идентификатором, объявленным для конечной точки;
  • QUOTA_EXCEEDED: запрос на отправку сообщения был отклонен из-за недостаточной квоты;
  • INVALID_REGISTRATION: запрос к отправить сообщение было отклонено из-за неверной регистрации;
  • INVALID_PACKAGE_NAME: запрос на отправку сообщения был отклонен из-за неверного имени пакета;
  • INVALID_APNS_CREDENTIAL: запрос на отправку сообщения был отклонен из-за неверного сертификата APNS tificate;
  • INVALID_PARAMETERS: запрос на отправку сообщения был отклонен из-за неверных параметров;
  • PAYLOAD_TOO_LARGE: запрос на отправку сообщения был отклонен из-за того, что полезная нагрузка превышает лимит;
  • AUTHENTICATION_ERROR: запрос на отправку сообщения был отклонен из-за ошибки аутентификации (проверьте API-ключ, используемый для отправки сообщения);
  • INVALID_TTL: запрос на отправку сообщения был отклонен из-за неверный TTL.

Надеюсь, это поможет. Удачи!

1 голос
/ 13 мая 2020
  • На всех телефонах наше приложение было открыто в момент получения pu sh или не позднее, чем за 2 минуты до

Как вы знаете, что все телефоны включены, а не спящий режим? Вы уверены на 100%?

  • Все pu sh являются данными pu sh (т.е. без тела / заголовка) с высоким приоритетом. Pu sh отправляется с истечение 10 секунд для определения их приоритета после Android документов

Я также использую FCM данных для координации обновлений между устройствами, в моем случае подавляющее большинство сообщений получают менее чем за 1/2 секунды, но иногда я замечал, что они задерживаются примерно до 20 секунд, а затем несколько раз принимаются внезапно.

При TimeToLive всего 10 секунд в вашем случае они будут потеряны.

Также Google утверждает, что 95% сообщений доставляются менее чем за 250 миллисекунд, но оставшиеся 5% делают это. нет, это уже оправдало бы потерю.

1 голос
/ 13 мая 2020

Существует несколько причин, по которым уведомление может не доставляться. И чтобы исправить это, вы можете попросить пользователя сделать следующее. проверьте Настройки > Батарея > Оптимизация батареи или адаптивная батарея > Найдите свое приложение и нажмите Не оптимизировать

Приложение может иметь права доступа sh Отключено В настройках устройства пользователь может включить и выключить pu sh уведомления. Из настроек уведомлений в разделе Настройки > Приложения

...