Помилки під час відправлення мобільних push-повідомлень
У розробці мобільних додатків помилки та проблеми неминучі, особливо коли справа стосується таких складних сервісів, як Firebase та APNS.
В цій статті розглядаються поширені сценарії помилок, їх причини та способи вирішення.
| Помилка | Можлива причина | Рішення |
|---|---|---|
| Device token not registered | Помилка означає, що токен не валідний. При використанні Firebase і для IOS і для Android, можуть прострочитись сертифікати APN додані до Firebase. Або сертифікати згенеровані не для того оточення, до якого потрібно. Коли до проекту в FCM додається Apple застосунок, то треба окремо для кожного оточення завантажити сертифікати й може таке бути, що для development оточення використовується production сертифікат, чи навпаки. | Перевірити дійсність сертифікату і його відповідність оточенню. |
| The authenticated sender ID is different from the sender ID for the registration token | Проблема може бути з service аккаунтом Firebase. | Можна спробувати розширити права у service аккаунті. |
| Токен згенерований в одному проекті firebase, а спроба відправити пуш з іншого. Можливо токен з тестового оточення використовується на продакшені чи навпаки. | Налаштувати відповідно правильне використання токенів. | |
MOB_PUSH_GENERAL_ERROR | Помилка немає опису з боку APNS сервісу і може свідчити про збій зі сторони сервісу APNS. | Зверніться до нашої підтримки для детального аналізу. |
| No more information is available about this error | Немає інформації про помилку. | Зверніться до нашої підтримки для детального аналізу. |
| Request parameters were invalid | В адмінці обрали APNS для пушів, але передача контактам з SDK налаштована FCM токенів, або навпаки. | Варіанти рішень:
|
InvalidProviderToken | Маркер автентифікації APN, який використовується для автентифікації за допомогою APN для надсилання сповіщень, могло бути відкликано в Центрі розробників Apple. | Створити новий APNs Auth Key. |
| Неправильне налаштування p8 сертифікату. | Перевірити налаштування сертифіката. | |
badDeviceToken | Помилка виникає при використанні токенів APNS згенерованих для Sandbox середовища на проді, чи навпаки згенерованих для проду на тестовому середовищі. | Зверніться до нашої підтримки, щоб ми перемкнули конфіг Sandbox на true. Та при використанні APN для IOS рекомендується мати два застосунки:
|
| Invalid registration token/The registration token is not a valid FCM | Додаток налаштований через FCM, але у контакта APN-токен, і навпаки. При отриманні такої помилки токен автоматично видаляється. | Налаштувати FCM/APN. |
TopicDisallowed | Ця помилка може виникати під час використання токенів APN, коли ідентифікатор пакета в налаштуваннях push-сповіщень Reteno (пов’язаний із файлом AuthKey .p8) не збігається з ідентифікатором пакета додатка, де тестується push-сповіщення. | Порівняйте значення, вказане в полі Тема під час створення застосунку в адмінпанелі Reteno, з ідентифікатором пакета застосунку, де тестується push-сповіщення. |
Про помилку Device token not registered
Помилка Device token not registered виникає під час відправлення і після неї токен автоматично видаляється — але це не обов'язково означає, що застосунок було видалено з пристрою: токен міг стати недійсним з інших причин. Видалений токен не може знову стати валідним: коли користувач повторно підписується на пуш-сповіщення, реєструється новий токен. Чіткого сегмента чи фільтра, який виокремлює контакти саме з цією причиною втрати токена, немає.
Усунення проблем: пристрій зареєстровано без push-токена
Іноді SDK успішно реєструє deviceID для контакту, але push-токен не прив'язується, навіть якщо користувач надав дозвіл на сповіщення. Перевірте наступне:
- Помилка реєстрації Firebase — дозвіл надано, але Firebase не повернув токен через мережеву помилку під час реєстрації; повторна спроба зазвичай вирішує це.
- Відсутній push-entitlement у provisioning profile (iOS) — provisioning profile застосунку має включати entitlement для push-сповіщень, інакше APNs не видасть токен.
- Використано тестовий/debug-сертифікат замість production — токен, згенерований під тестовим (debug) APN-сертифікатом, не зареєструється коректно, якщо застосунок налаштований на очікування production-сертифіката, або навпаки. Див. примітки щодо Sandbox-середовища в таблиці вище.
Зверніть увагуЦе нормально, коли SDK надсилає кілька запитів на реєстрацію поспіль під час ініціалізації (наприклад, спочатку лише з
deviceID, а потім — з push-токеном, коли він стає доступним).
Зверніть увагуНа відміну від мобільних push-повідомлень, для Email єдиного переліку кодів помилок немає — конкретні коди й формулювання залежать від поштового провайдера одержувача.
Зверніть увагуТокени видаляються лише за результатом спроби відправлення: коли доставка повертає помилку недійсного токена (наприклад, «Device token not registered»), система автоматично видаляє такий токен. Фонового або планового очищення токенів без спроби відправлення немає, тому недійсний токен, на який нічого не надсилали, залишається в акаунті до наступної відправки.
Updated 5 days ago