Бейджи на иконке приложения

Покажите счётчик непрочитанного прямо на иконке приложения

Бейдж — самое короткое, что можно сказать пользователю, и прочитать его ничего не стоит. Задавайте, увеличивайте или сбрасывайте его из той же кампании и того же Customer Journey, что и всё остальное, что вы отправляете.

Три домашних экрана iPhone рядом: у нескольких иконок приложений в углу красный бейдж со счётчиком непрочитанного, у остальных иконок бейджа нет

Более 80 000 компаний масштабируют вовлечение с Pushwoosh

Формат целиком

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

Точное значение

ios_badges: 5 ставит на иконку 5, что бы там ни было до этого. Пользователь видит ровно то значение, которое вы отправили, — то, что нужно, когда ваш сервер уже знает реальный итог.

+1 и -1

Относительные изменения увеличивают или уменьшают счётчик, и вам не нужно его отслеживать. SDK передаёт значение с устройства обратно через внутренний эндпоинт /setBadge, так что счётчик Pushwoosh совпадает с реальной иконкой.

0 сбрасывает бейдж

Отправьте 0, и бейдж исчезнет с иконки. Сброс при открытии — это разница между счётчиком, которому доверяют, и красной точкой, которую привыкают игнорировать.

iOS единообразно, Android зависит от лаунчера

В iOS бейдж — это стандартное значение aps.badge, и каждое устройство отрисовывает его одинаково. В Android нативного API для бейджей нет, поэтому отображение зависит от лаунчера, и Pushwoosh говорит об этом прямо, а не обещает покрытие, которое не может обеспечить.

Чем вы управляете

Что вы отправляетеЧто происходит со счётчикомГде это задаётся
Целое число, 5Устанавливает бейдж ровно на это значениеios_badges / android_badges или поле Badges
+1, +3Увеличивает текущий счётчикТо же поле. Также +n в Android-пресетах
-1Уменьшает текущий счётчикТо же поле, для прочтения или закрытия на стороне сервера
0Убирает бейдж с иконкиТо же поле или приложение при запуске
Вызов SDKУстанавливает или сбрасывает бейдж по событию в приложенииsetApplicationIconBadgeNumber в iOS, PushwooshBadge в Android
НичегоSDK применяет бейдж, пришедший вместе с пушемБазовый сценарий в iOS не требует кода в приложении
РасширениеМеняет счётчик до показа уведомленияPWNotificationExtensionManager с App Groups
Что вы отправляете
1 / 7
Целое число, 5
Что происходит со счётчиком
Устанавливает бейдж ровно на это значение
Где это задаётся
ios_badges / android_badges или поле Badges
Что вы отправляете
2 / 7
+1, +3
Что происходит со счётчиком
Увеличивает текущий счётчик
Где это задаётся
То же поле. Также +n в Android-пресетах
Что вы отправляете
3 / 7
-1
Что происходит со счётчиком
Уменьшает текущий счётчик
Где это задаётся
То же поле, для прочтения или закрытия на стороне сервера
Что вы отправляете
4 / 7
0
Что происходит со счётчиком
Убирает бейдж с иконки
Где это задаётся
То же поле или приложение при запуске
Что вы отправляете
5 / 7
Вызов SDK
Что происходит со счётчиком
Устанавливает или сбрасывает бейдж по событию в приложении
Где это задаётся
setApplicationIconBadgeNumber в iOS, PushwooshBadge в Android
Что вы отправляете
6 / 7
Ничего
Что происходит со счётчиком
SDK применяет бейдж, пришедший вместе с пушем
Где это задаётся
Базовый сценарий в iOS не требует кода в приложении
Что вы отправляете
7 / 7
Расширение
Что происходит со счётчиком
Меняет счётчик до показа уведомления
Где это задаётся
PWNotificationExtensionManager с App Groups

Где это настраивается

Поле Badges в редакторе

Форма отправки пуша и пуш-пресеты принимают число, +n, -n или 0. Чтобы изменить, что кампания делает со счётчиком, не нужны ни релиз, ни разработчик.

Один ключ в API

ios_badges и android_badges в /createMessage. В iOS значение попадает в поле aps.badge того payload, который Apple и так передаёт.

SDK применяет и синхронизирует

SDK применяет пришедшее значение без кода в приложении и поддерживает серверное значение бейджа актуальным через /setBadge, чтобы +1 считался от правильного числа.

Как это работает внутри сценария

Один счётчик, несколько источников

Бейдж — это атрибут сообщения, которое вы и так отправляете, поэтому собственная интеграция ему не нужна. Тот же Customer Journey и тот же профиль клиента, которые решают, кто получит пуш, решают и то, каким станет счётчик.

Остаётся только вопрос, что питает это число. Количество непрочитанного в Message Inbox может напрямую стать счётчиком, silent push может изменить его вообще без алерта, а видимый мобильный пуш несёт его попутно. Шаг на цели сценария возвращает его к 0.

Три награды копятся, пока игрок не в игре

Каждая выданная награда вызывает событие, и каждое событие отправляет silent push, который добавляет +1. Ничего не звенит, экран блокировки не загорается, а к вечеру на иконке тихо стоит 3.

Когда открывается live-ивент, тот же сценарий отправляет один видимый пуш, ради которого стоит прервать пользователя. Что бы ни вернуло игрока — пуш или бейдж, — SDK сбрасывает бейдж до 0 при запуске, и завтрашний счётчик снова начинается с правдивого значения.

Где это применять

Бейдж окупается пропорционально «плотности счёта»: есть ли у вашего приложения реальное, растущее число непрочитанного или ожидающего, которое стоит показать на иконке. Приложения, построенные вокруг счётчика, бесплатно получают настоящий повод вернуться, а приложения, которым нечего считать, получают красную точку, которая приучает пользователей игнорировать красные точки.

МоментЧто означает числоПочему подходит бейдж
Мобильные игры: награды, восстановленные жизни, входы в ивенты3 награды ждутСчётчик уже часть цикла удержания, а сбор наград — вся мотивация
Приложения для креаторов и подписочные сервисы: дропы, личные сообщения, комментарии12 непрочитанныхСоциальная лента и так ведёт это число внутри, иконке остаётся его показать
Медиа и новости: непрочитанные материалы, новые эпизоды5 непрочитанных материаловХрестоматийный случай, который надёжно возвращает читателя в сессию
E-commerce и маркетплейсы: товары в корзине, непрочитанные предложения2 товара в корзинеТихое напоминание, на которое покупателю не нужно тратить внимание
FinTech: выписки, алерты, ожидающие действияНужно 1 действиеЕсть реальный счётчик непрочитанных документов, и иконка показывает его, не раскрывая детали на экране блокировки
Трейдинг и беттинг: сработавшие алерты, рассчитанные ставкиСработало 4 алертаАлерты складываются в число, которое действительно что-то значит для пользователя
Здравоохранение и телемедицина: результаты, защищённые сообщенияРезультаты готовыСчётчик виден на домашнем экране, а содержимое остаётся за аутентификацией
EdTech: непрочитанные уроки, серии, задания2 урока ждутСерия или очередь уроков — именно то число, которое люди стремятся закрыть
Момент
1 / 8
Мобильные игры: награды, восстановленные жизни, входы в ивенты
Что означает число
3 награды ждут
Почему подходит бейдж
Счётчик уже часть цикла удержания, а сбор наград — вся мотивация
Момент
2 / 8
Приложения для креаторов и подписочные сервисы: дропы, личные сообщения, комментарии
Что означает число
12 непрочитанных
Почему подходит бейдж
Социальная лента и так ведёт это число внутри, иконке остаётся его показать
Момент
3 / 8
Медиа и новости: непрочитанные материалы, новые эпизоды
Что означает число
5 непрочитанных материалов
Почему подходит бейдж
Хрестоматийный случай, который надёжно возвращает читателя в сессию
Момент
4 / 8
E-commerce и маркетплейсы: товары в корзине, непрочитанные предложения
Что означает число
2 товара в корзине
Почему подходит бейдж
Тихое напоминание, на которое покупателю не нужно тратить внимание
Момент
5 / 8
FinTech: выписки, алерты, ожидающие действия
Что означает число
Нужно 1 действие
Почему подходит бейдж
Есть реальный счётчик непрочитанных документов, и иконка показывает его, не раскрывая детали на экране блокировки
Момент
6 / 8
Трейдинг и беттинг: сработавшие алерты, рассчитанные ставки
Что означает число
Сработало 4 алерта
Почему подходит бейдж
Алерты складываются в число, которое действительно что-то значит для пользователя
Момент
7 / 8
Здравоохранение и телемедицина: результаты, защищённые сообщения
Что означает число
Результаты готовы
Почему подходит бейдж
Счётчик виден на домашнем экране, а содержимое остаётся за аутентификацией
Момент
8 / 8
EdTech: непрочитанные уроки, серии, задания
Что означает число
2 урока ждут
Почему подходит бейдж
Серия или очередь уроков — именно то число, которое люди стремятся закрыть

Когда бейдж — неподходящий инструмент

Бейдж сообщает количество. Всё, что касается того, что именно ждёт и насколько это срочно, относится к другим поверхностям.

  • Пользователю нужно знать, что пришло: это задача мобильного пуша, rich media push или in-app сообщения.
  • Момент не может ждать. Бейдж пассивен по своей природе, поэтому срочность — задача уровня прерывания.
  • Состояние длящееся, а не счётное: заказ в пути, текущий счёт матча. Это Live Activity.
  • У приложения нет естественно растущего счётчика. Страхование, отели, коммунальные услуги и инструменты на одну сессию дают один счёт или одну бронь, и бейдж там лишь шум.
  • Ваша аудитория преимущественно на Android, и бейдж был бы основной механикой. Там считайте его best-effort и проектируйте сценарий так, чтобы он работал и без бейджа.
Счётчик заставляет посмотреть. Но пуш всё равно должен стоить того, чтобы его открыли

50 пуш-уведомлений, которые стоит взять за образец, с текстом и креативом за каждым из них.

Получить примеры

Платформы и техническое покрытие

В iOS один бейдж, и каждый iPhone рисует его одинаково. В Android нет универсального API для бейджей, поэтому то, что появится на домашнем экране, зависит от лаунчера, который стоит у пользователя. Последний столбец называет то, что реально отрисовывает число, потому что для этой функции честный ответ находится именно там.

ВозможностьiOSAndroidWebЧем обеспечивается
Точное значение бейджаДа, стандартный aps.badgeBest-effort, зависит от лаунчера–Payload пуша, применяется SDK
Относительные +1 и -1Да, Pushwoosh SDK 6.4.0++n в пресетах, зависит от лаунчера–Пуш, а /setBadge синхронизирует счётчик
Сброс до 0ДаЗависит от лаунчера–Payload пуша или приложение при запуске
Поле Badges без кодаДа, в редакторе и пресетахДа, значение бейджа в пресетах–Pushwoosh Control Panel
Установка или сброс из кода приложенияsetApplicationIconBadgeNumberPushwooshBadge–Ваше приложение через Pushwoosh SDK
Изменение счётчика до показаДа, в Notification Service Extension––PWNotificationExtensionManager с App Groups
Обновление бейджа без алертаДаBest-effort–Silent push, та же аудитория и тот же сценарий
Покрытие лаунчеров и устройствКаждый iPhone, одинаковоSony, Samsung, LG, HTC, ASUS, ADW, APEX, NOVA, Huawei, ZUK, OPPO–com.pushwoosh:pushwoosh-badge с разрешениями лаунчеров
Pixel и неподдерживаемые лаунчерыn/a––Нативного API бейджей в Android нет, поэтому ничего не отображается
Чтение текущего счётчика из ОС–––iOS не даёт API для чтения, поэтому счётчик хранится в приложении или на сервере
Бейдж на иконке в принципеДаЗависит от лаунчера–У браузеров нет аналогичной поверхности для web push
Возможность
1 / 11
Точное значение бейджа
iOS
Да, стандартный aps.badge
Android
Best-effort, зависит от лаунчера
Web
–
Чем обеспечивается
Payload пуша, применяется SDK
Возможность
2 / 11
Относительные +1 и -1
iOS
Да, Pushwoosh SDK 6.4.0+
Android
+n в пресетах, зависит от лаунчера
Web
–
Чем обеспечивается
Пуш, а /setBadge синхронизирует счётчик
Возможность
3 / 11
Сброс до 0
iOS
Да
Android
Зависит от лаунчера
Web
–
Чем обеспечивается
Payload пуша или приложение при запуске
Возможность
4 / 11
Поле Badges без кода
iOS
Да, в редакторе и пресетах
Android
Да, значение бейджа в пресетах
Web
–
Чем обеспечивается
Pushwoosh Control Panel
Возможность
5 / 11
Установка или сброс из кода приложения
iOS
setApplicationIconBadgeNumber
Android
PushwooshBadge
Web
–
Чем обеспечивается
Ваше приложение через Pushwoosh SDK
Возможность
6 / 11
Изменение счётчика до показа
iOS
Да, в Notification Service Extension
Android
–
Web
–
Чем обеспечивается
PWNotificationExtensionManager с App Groups
Возможность
7 / 11
Обновление бейджа без алерта
iOS
Да
Android
Best-effort
Web
–
Чем обеспечивается
Silent push, та же аудитория и тот же сценарий
Возможность
8 / 11
Покрытие лаунчеров и устройств
iOS
Каждый iPhone, одинаково
Android
Sony, Samsung, LG, HTC, ASUS, ADW, APEX, NOVA, Huawei, ZUK, OPPO
Web
–
Чем обеспечивается
com.pushwoosh:pushwoosh-badge с разрешениями лаунчеров
Возможность
9 / 11
Pixel и неподдерживаемые лаунчеры
iOS
n/a
Android
–
Web
–
Чем обеспечивается
Нативного API бейджей в Android нет, поэтому ничего не отображается
Возможность
10 / 11
Чтение текущего счётчика из ОС
iOS
–
Android
–
Web
–
Чем обеспечивается
iOS не даёт API для чтения, поэтому счётчик хранится в приложении или на сервере
Возможность
11 / 11
Бейдж на иконке в принципе
iOS
Да
Android
Зависит от лаунчера
Web
–
Чем обеспечивается
У браузеров нет аналогичной поверхности для web push

Безопасность и хостинг

Pushwoosh работает на собственном оборудовании в США и Германии в соответствии с GDPR.

ISO 27001:2022 CertifiedISO 27001 CertifiedGDPR CompliantData Privacy FrameworkHIPAA CompliantSOC 2 Type 2 CertifiedOWASP Compliant

Как это работает

Бейдж настраивается без кода и бесплатен на любом тарифе. Время разработчика уходит только в два узких места, и базовый сценарий iOS к ним не относится.

  1. Задайте счётчик (без кода)

    Введите число, +n, -n или 0 в поле Badges формы отправки пуша или пресета либо передайте ios_badges и android_badges через Messages API. В базовом сценарии iOS от приложения ничего не требуется: SDK применяет значение при получении.

  2. Подключите два места, где это нужно (разработчик)

    Для Android нужна библиотека com.pushwoosh:pushwoosh-badge и разрешения конкретных лаунчеров в манифесте. Сброс при открытии пуша и запуске приложения — это один вызов SDK, а Notification Service Extension с App Groups нужен только для счётчиков, которые должны меняться до показа.

  3. Оркестрируйте (без кода)

    Берите число из количества непрочитанного в Message Inbox, меняйте его silent push без алерта и сбрасывайте на цели того же Customer Journey, который управляет вашими push, in-app и email.

Ограничения, о которых стоит знать

Примитив счётчика с одной единообразной платформой и одной фрагментированной. Вот его границы.

  • iOS работает единообразно и в полной мере. Android — best-effort, потому что в ОС нет универсального API для бейджей и отображение решает лаунчер.
  • Покрытие Android действительно неравномерное. Samsung и Xiaomi используют разные механизмы, собственный лаунчер Google Pixel в основном не показывает бейджи на иконках, а некоторые сторонние лаунчеры их игнорируют.
  • Обновление бейджей в Android ограничено энергосбережением. Doze и App Standby урезают фоновую работу, от которой они зависят, а принудительно остановленное приложение не может обновить счётчик, пока его не откроют снова.
  • Устройства Huawei передают управление бейджами собственному лаунчеру Huawei, поэтому поведение зависит от устройства и версии EMUI или HarmonyOS.
  • Относительные +1 и -1 зависят от того, знает ли SDK текущее значение. Приложение, которое переопределяет бейдж без синхронизации, может привести к тому, что серверный инкремент будет считаться от неправильного числа, а iOS не даёт API, чтобы прочитать системный бейдж обратно.
  • Механика бейджа через пуш изменилась в iOS SDK 6.4.0. Приложениям, которые использовали бейдж для подсчёта полученных пушей, пришлось мигрировать, поэтому планируйте под текущее поведение, а не под устаревшее.
  • Бейдж передаёт количество и ничего больше. Что именно ждёт и насколько это срочно, должны сообщать пуш, in-app сообщение или уровень прерывания.
  • На сервере он почти не оставляет следов. В сохранённом payload видны только кампании, явно задающие бейдж, а применение и сброс через SDK — нет, поэтому измеряйте эффект, сравнивая когорту с бейджем и без него, а не ищите его в отчёте.

Другие продукты

Push-уведомления для iOS и Android

Push-уведомления Pushwoosh: охват всех устройств, rich-контент, точный таргетинг, Journey и 99% аптайм. Превращайте уведомления в платящих клиентов.

Message Inbox

Message Inbox — центр уведомлений внутри приложения и сайта. Тихая доставка охватывает всех, включая отказавшихся от пушей, а сообщения остаются доступны.

Конструктор Customer Journey

Спроектируйте и оптимизируйте свои кампании с помощью одного визуального инструмента. Коммуницируйте, вовлекайте, удерживайте, конвертируйте, сегментируйте и экспериментируйте с помощью Pushwoosh Customer Journey Builder.

In-App сообщения

In-app сообщения Pushwoosh — онбординг, апселл, анонсы и сбор фидбэка ровно в тот момент, когда пользователи сфокусированы на приложении. No-code редактор, нативные SDK-шаблоны, аналитика по каждому элементу. Соответствует GDPR. Начните бесплатно.

Time-Sensitive и Critical push

Задайте уровень прерывания iOS для пуша, чтобы оповещение о мошенничестве или смене выхода прорвалось через Focus и Scheduled Summary. Без кода.

Push-уведомления для мобильных игр

Платформа мобильных push-уведомлений для игровых приложений. Отправляйте персонализированные оповещения, специальные предложения и напоминания о событиях, чтобы игроки возвращались снова и снова.