Ошибка #15
closed
AK
проверить работу с FCM токенами на бэке
Description
Весть день ловил баги с тем что после нескольиких логинов в тот же самый аккаунт, в какой то момент на него переставали приходить пуши, при этом бэк каждый раз был в курсе о новом FCM токене, но пуши не доходили. Нужно проверить 2 момента:
- Каждая переустановка и каждый логаут рождают новый токен, а старый умирает. И все четыре слота «последних токенов» забиваются историей одного и того же устройства — из них живой ровно один. Многоустройственность при этом не работает: реальный второй телефон просто вытесняется трупами первого.
Отсюда два следствия, и оба стоит проверить у себя на бэке:
Первое — обрывается ли рассылка на первой ошибке. Если цикл отправки идёт по четырём токенам и падает/выходит на первом UNREGISTERED, то живой токен, стоящий позже в списке, пуш не получит. Снаружи это выглядит ровно как наши сегодняшние сбои: токен зарегистрирован, 200, Console доходит, а бэкенд молчит. Отправка должна продолжаться по всем токенам, а ошибка по одному — не влиять на остальные.
2 — чистка. UNREGISTERED / NOT_FOUND нужно не игнорировать, а удалять токен по нему. Это стандартная практика, ради неё FCM этот код и возвращает. Без неё слоты забиваются мёртвыми токенами навсегда, потому что клиент их удалить не может: при переустановке локальная запись стирается вместе с приложением, и он попросту не знает, что просить удалить.