У вас есть два варианта назначения приоритета доставки нисходящим сообщениям на 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 или более поздней версии. Сообщения, отправленные через API HTTP v1, передаются через прокси, но сообщения, отправленные через консоль 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 , чтобы она выполнялась в фоновом режиме.