Есть ли различия в сервисах пуш-уведомлений разных вендоров?
Что проверяют
Понимаете ли вы, что пуш на телефон доставляет не ваш бэкенд, а служба платформы, и что от неё зависят лимиты, поведение и точки отказа. Следом обычно спрашивают, как вы тестировали пуши и почему уведомление не пришло на конкретном устройстве.
Как отвечать
Разделите транспорт и надстройки. Транспорт это службы платформ:
- APNs: iOS, iPadOS, macOS. Две среды, sandbox и production: токен из debug-сборки на боевой шлюз не доставится. Авторизация ключом
.p8или сертификатом, который истекает раз в год; - FCM: Android с сервисами Google. Сообщения бывают notification и data: в фоне notification показывает система, и
onMessageReceivedне вызывается, а data приходит в приложение. Легаси API отключены, актуален HTTP v1; - HMS Push Kit, RuStore и службы производителей: для устройств без сервисов Google, со своими SDK и токенами;
- Web Push: Push API, service worker и ключи VAPID, доставляет служба браузера.
OneSignal, Pushwoosh и AWS SNS это надстройки с сегментами и аналитикой, а до устройства пуш всё равно везут APNs и FCM. Даже FCM на iPhone отправляет через APNs.
Что это значит для тестирования:
- размер: около 4 КБ полезной нагрузки у APNs и FCM, проверьте длинный текст;
- разрешения: на iOS явный запрос, на Android 13+
POST_NOTIFICATIONS, плюс каналы, которые пользователь отключает по одному; - приоритет и TTL: в Doze обычный приоритет откладывается, просроченный пуш не придёт;
- токен: переустановка, очистка данных, выход из аккаунта;
- состояния: открыто, в фоне, выгружено, плюс диплинк из уведомления.
На симуляторе iOS пуш отправляется командой xcrun simctl push с файлом .apns.
Где спотыкаются
Ставят OneSignal в один ряд с APNs, будто это конкурирующие каналы доставки.
Тестируют на одном Pixel. На Xiaomi, Huawei и других оболочках с агрессивной экономией батареи выгруженное приложение пуш может не получить, пока не разрешён автозапуск.
Проверяют только факт показа. Не смотрят, что происходит в фоне, куда ведёт тап и не дублируется ли уведомление при повторной отправке.