Деактивация push-токенов
Push-токен считается недействительным (hardbounce), а статус его подписки меняется на Hardbounced, если в ответе провайдера содержится один из маркеров из таблиц ниже:
Ошибки провайдера, приводящие к деактивации токена
| Группа провайдеров | Маркеры в тексте ошибки | Описание ошибки |
|---|---|---|
| Firebase / FCM: Android, iOS, Samsung, Opera, Yandex, Chrome через Firebase, Firefox через Firebase, RuStore | NotRegistered | Приложение было удалено с устройства, токен отозван или устройство перестало получать push от FCM. Платформа больше не отправляет на этот токен и деактивирует подписку. |
| Firebase / FCM: Android, iOS, Samsung, Opera, Yandex, Chrome через Firebase, Firefox через Firebase, RuStore | InvalidRegistration | Токен некорректный: повреждён, имеет неверный формат или сгенерирован для другого приложения/проекта. Платформа больше не отправляет на этот токен и деактивирует подписку. |
| Firebase / FCM: Android, iOS, Samsung, Opera, Yandex, Chrome через Firebase, Firefox через Firebase, RuStore | Requested entity was not found. | FCM не нашёл запись о токене в своей базе (токен ранее не существовал или был удалён). Платформа больше не отправляет на этот токен и деактивирует подписку. |
| Firebase / FCM (отправщик FCM API v1) | The registration token is not a valid FCM registration token | Тот же смысл, что InvalidRegistration: FCM API v1 не признаёт токен валидным. Платформа больше не отправляет на этот токен и деактивирует подписку. |
| Chrome Web Push (legacy API) | NotRegistered / InvalidRegistration | Тот же смысл, что в FCM: подписка на push удалена пользователем/браузером либо токен повреждён. Платформа больше не отправляет на этот токен и деактивирует подписку. |
| APNs (iOS, Safari) | Unregistered | Токен устройства отозван Apple: приложение удалено, push отключены в настройках iOS или токен переиздан. Платформа больше не отправляет на этот токен и деактивирует подписку. |
| APNs (iOS, Safari) | BadDeviceToken | Apple не распознала токен: неверный формат, повреждение или токен не привязан к данному приложению. Платформа больше не отправляет на этот токен и деактивирует подписку. |
| Safari Web Push (native) | Unregistered | Подписка на push Safari удалена (пользователь отключил уведомления или сбросил разрешения сайта). Платформа больше не отправляет на этот токен и деактивирует подписку. |
| Firefox Web Push (legacy) | No such subscription | Подписка на push в Firefox не найдена: была отозвана пользователем или истекла. Платформа больше не отправляет на этот токен и деактивирует подписку. |
Провайдеры, у которых деактивация по ответу провайдера не выполняется
| Группа провайдеров | Поведение |
|---|---|
| Huawei (Android / Web / iOS) | Все ошибки считаются временными |
| Yandex AppMetrica (все виды токенов) | Все ошибки считаются временными |
| Mail.ru Push | Все ошибки считаются временными |
Ошибки, не приводящие к деактивации
Все ответы провайдера, не содержащие маркеров из таблиц выше (включая Sender MissMatch), считаются временными ошибками: по ним регистрируется softbounce, выполняются повторные попытки отправки, затем фиксируется недоставка (undeliv). Статус подписки при этом не меняется, а отправка продолжит предприниматься при последующих запусках.
Итоговая схема
| Ответ провайдера | События | Статус подписки |
|---|---|---|
| Содержит HB-маркер из таблицы | hbounce + undeliv | Hardbounced (токен деактивирован) |
| Другая ошибка | sbounce (повторы) → undeliv | Не меняется (токен остаётся активным) |
к сведению
Подробнее о статусах подписок — в статье Профиль подписчика. Причины недоставки push-уведомлений собраны в отчёте о недоставках.