Устанавливайте и управляйте приоритетом сообщений

У вас есть два варианта назначения приоритета доставки нисходящим сообщениям на Android: обычный и высокий приоритет. Доставка обычных и высокоприоритетных сообщений работает следующим образом:

  • Нормальный приоритет. Это приоритет по умолчанию для сообщений с данными . Сообщения с обычным приоритетом доставляются немедленно, когда устройство не находится в спящем режиме. Когда устройство находится в спящем режиме , доставка может быть отложена для экономии заряда батареи до тех пор, пока устройство не выйдет из спящего режима. Для менее срочных сообщений, таких как уведомления о новых электронных письмах, синхронизация пользовательского интерфейса или синхронизация данных приложения в фоновом режиме, выберите обычный приоритет доставки.

    При получении сообщения с обычным приоритетом на Android, которое запрашивает фоновую синхронизацию данных для вашего приложения, вы можете запланировать задачу с помощью WorkManager для ее обработки, когда сеть будет доступна.

  • Высокий приоритет. FCM пытается доставить сообщения с высоким приоритетом немедленно, позволяя FCM при необходимости разбудить спящее устройство и выполнить некоторую ограниченную обработку (включая очень ограниченный доступ к сети). Сообщения с высоким приоритетом обычно должны приводить к взаимодействию пользователя с вашим приложением или его уведомлениями.

Обработка сообщений и деприоритизация на Android

Сообщения с высоким приоритетом на Android предназначены для чувствительного ко времени, видимого пользователю контента и должны приводить к уведомлениям, ориентированным на пользователя. Если FCM обнаруживает закономерность, при которой сообщения не приводят к уведомлениям пользователя, вашим сообщениям может быть присвоен обычный приоритет или делегировано для обработки Службами Google Play.

FCM использует 7-дневное поведение сообщений при определении того, следует ли деприоритизировать сообщения или прокси-серверы; он делает это определение независимо для каждого экземпляра вашего приложения. Если в ответ на сообщения с высоким приоритетом уведомления отображаются так, чтобы это было видно пользователю, то ваши будущие сообщения с высоким приоритетом не будут затронуты.

Делегирование уведомлений с помощью сервисов Google Play

Уведомительные сообщения с высоким приоритетом (не сообщения с данными), соответствующие определенным критериям, передаются через сервисы Google Play, а не теряют приоритет. Это означает, что уведомления отображаются сервисами Google Play от имени приложения без необходимости запуска приложения. Это сделано для улучшения общего взаимодействия с пользователем на устройствах Android.

Обратите внимание, что прокси-уведомления вносят изменения в то, как сообщается аналитика, связанная с полученными сообщениями:

  • Чтобы можно было получать аналитику для прокси-уведомлений, ваше приложение должно использовать FCM SDK версии 24.0.0 или выше.
  • Вы можете заметить задержки или снижение количества полученных сообщений по сравнению с тем, что было до введения прокси-уведомлений. Это связано с тем, что аналитика для прокси-уведомлений сообщается только после запуска вашего приложения и может вообще не сообщаться, если уведомление не приводит к открытию приложения.

Проксирование уведомлений таким способом является поведением по умолчанию для приложений, использующих Android Q+ и сервисы Google Play версии 19054000 или более поздней версии. Сообщения, отправленные через HTTP v1 API, передаются через прокси, но сообщения, отправленные через консоль Firebase или устаревшие API, не будут проксироваться . Обратите внимание, что эта функция в настоящее время находится на стадии бета-тестирования и может быть изменена.

Хотя мы настоятельно рекомендуем оставить делегирование включенным из-за его преимуществ для аккумулятора и памяти устройства, вы можете отказаться от этого поведения любым из следующих способов:

  • На уровне приложения: в манифесте приложения добавьте директиву <meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/> .
  • Для экземпляра приложения: для экземпляра приложения установите fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!> в потоке пользовательского интерфейса вашего приложения, в зависимости от конкретного варианта использования.
  • Для каждого сообщения: установите для proxy ключа значение DENY в объекте AndroidNotification для запроса на отправку.

Измерение снижения приоритетности сообщений на Android

  • Индивидуальные сообщения. При доставке вы можете определить, был ли удален приоритет отдельного сообщения или нет, сравнивая его приоритет доставки из getPriority() с его исходным приоритетом из getOriginalPriority() .

  • Все сообщения. API совокупных данных доставки FCM может сообщить, какой процент всех ваших сообщений на Android теряет приоритет. Некоторые сообщения могут быть исключены из сводных отчетов по данным, но в целом они должны давать глобальное представление о степени деприоритизации сообщений. Дополнительную информацию и пример кода для запроса API см. в нашей статье об агрегированных данных о доставке ; его также можно изучить с помощью API Explorer .

  • Прокси-уведомления. Уведомления через прокси не будут учитываться в текущих показателях доставки FCM или GA, поэтому вы можете столкнуться с падением показателей доставки уведомлений до 15 %. Для создания отчетов о проксированных сообщениях используйте API FCM Aggregate Delivery Data . ProxyNotificationInsightPercents сообщает о проценте успешно проксированных уведомлений, а также сведения о сообщениях, которые не удалось успешно проксировать.

Поиск неисправностей

  • Убедитесь, что в вашем экземпляре приложения включены уведомления. Если пользователь отключил разрешение на уведомления для вашего приложения, ни одно из ваших уведомлений не будет опубликовано, в результате ваши сообщения будут лишены приоритета. Вам следует убедиться, что уведомления включены , прежде чем отправлять сообщения с высоким приоритетом в экземпляр приложения.

  • Не звоните домой до отправки уведомления. Поскольку небольшая часть мобильных пользователей Android пользуется сетями с высокой задержкой, не открывайте соединение с серверами до отображения уведомления. Обратный вызов сервера до окончания разрешенного времени обработки может быть рискованным для пользователей в сетях с высокой задержкой. Вместо этого включите содержимое уведомления в сообщение FCM и немедленно отобразите его. Если вам нужно синхронизировать дополнительный контент в приложении на Android, вы можете запланировать задачу с помощью WorkManager , чтобы она выполнялась в фоновом режиме.