Push-уведомления: как работают и что отправлять
Push-уведомления простыми словами: как работают APNs и FCM, когда просить разрешение, что отправлять, чего не стоит и как мерить пользу.
Push-уведомления — это короткие сообщения, которые твой сервер присылает на телефон пользователя, даже когда приложение закрыто. Доставляет их не твой сервер напрямую, а служба платформы: у Apple это APNs, у Google — FCM.
Пуш — самый дешёвый способ вернуть человека в продукт и самый быстрый способ его потерять. Одно лишнее уведомление — и человек отключает их все, а то и удаляет приложение.
Как работают push-уведомления
Схема одинаковая почти везде, меняются только названия:
- Приложение просит у системы разрешение и получает токен устройства — длинную строку, адрес этого приложения на этом телефоне.
- Приложение отправляет токен на твой сервер, и ты сохраняешь его рядом с пользователем.
- Когда нужно что-то сообщить, сервер отправляет сообщение с токеном в APNs или FCM.
- Служба платформы доставляет его на телефон, когда тот будет в сети.
Держать постоянное соединение с каждым телефоном тебе не нужно — это делает платформа. FCM умеет отправлять и на iPhone, передавая сообщение в APNs, поэтому многие используют его как единую точку для обеих платформ.
Сообщение — это небольшой JSON: заголовок, текст и данные, по которым приложение поймёт, какой экран открыть.
{ "title": "Заказ в пути", "body": "Курьер будет с 14:00 до 16:00", "data": { "screen": "order", "id": "8412" } }
Две технические вещи, о которых часто забывают. Токены меняются и умирают — когда служба отвечает, что токен недействителен, его нужно удалить, иначе база заполнится мёртвыми адресами. И нажатие на уведомление должно вести на нужный экран, а не на главную: ради этого человек и нажал.
Когда просить разрешение
На iPhone системный запрос показывается один раз. Если человек нажал «Не разрешать», вернуть его можно только через настройки телефона, и почти никто туда не идёт. На свежих версиях Android запрос тоже стал явным.
Поэтому не спрашивай на первом экране, когда человек ещё не понял, что это за приложение. Спрашивай в момент, когда польза очевидна:
- сразу после оформления заказа — «сообщить, когда курьер выедет?»;
- когда человек подписался на что-то — «прислать, когда начнётся?»;
- когда он сам поставил напоминание.
Хороший приём — сначала показать свой экран с объяснением и кнопками «Да» и «Не сейчас», и только после «Да» вызвать системный запрос. Отказ на своём экране ничего не сжигает — можно спросить позже. На iOS есть и тихий вариант: уведомления приходят в центр уведомлений без звука, а человек сам решает, оставить ли их.
Что отправлять
Лучшие уведомления — те, которые человек и так ждёт:
- изменения статуса того, что он сделал: заказ, оплата, ответ на заявку;
- сообщения от других людей;
- напоминания, которые он поставил сам;
- события, на которые он подписался явно.
Маркетинговые пуши тоже возможны, но с ограничениями: не чаще, чем ты бы сам хотел их получать, в дневное время по часовому поясу пользователя и про что-то, что ему действительно может быть интересно.
Чего не отправлять
- «Мы скучаем!» и прочие уведомления, единственная цель которых — открытие приложения.
- Чувствительное на экране блокировки: коды входа, суммы, детали о здоровье. Экран блокировки видят все, кто рядом.
- Одно и то же сообщение по трём каналам одновременно — пуш, письмо и SMS.
- Уведомления ночью, потому что сервер живёт по своему часовому поясу.
Дай человеку выбирать типы: отдельные переключатели для заказов, сообщений и новостей в настройках приложения. На Android для этого есть каналы уведомлений — человек может выключить «Акции» и оставить «Заказы». Без такого выбора он выключит всё.
Как мерить пользу
Считай не только нажатия:
- доля разрешивших — сколько людей сказали «да» и на каком экране спрашивали;
- доставка — сколько отправленных реально дошло, а сколько упёрлось в мёртвые токены;
- открытия по каждому типу уведомлений отдельно;
- отключения — после какого типа люди выключают уведомления или удаляют приложение;
- целевое действие — вернулся ли человек и сделал ли то, ради чего уведомление отправлено.
Самый честный способ понять, работает ли рассылка, — оставить небольшую контрольную группу без неё и сравнить удержание. Высокий процент открытий при растущих отключениях — плохой результат, а не хороший.
Коротко
- Пуш доставляет служба платформы (APNs или FCM) по токену устройства, который хранит твой сервер.
- Разрешение спрашивай в момент очевидной пользы, а не на первом экране.
- Отправляй то, что человек ждёт; маркетинг — редко, днём и по делу.
- Не показывай чувствительное на экране блокировки и давай выбирать типы уведомлений.
- Меряй не открытия, а возвраты и отключения, лучше — с контрольной группой.
SUBXCAT может настроить уведомления от токенов до правил рассылки так, чтобы они возвращали людей, а не раздражали их.