FCM HTTP V1 API возвращает 404 для незарегистрированного токена
API FCM HTTP v1 должен возвращать код ошибки "UNREGISTERED", когда устройство не зарегистрировано (приложение удалено). Однако API возвращает 404 "Запрошенный объект не найден".
Кто-нибудь испытал это? Это ожидаемый? Об этом нигде не упоминается в документации.
Можно ли считать устройство незарегистрированным, если ошибка 404 с сообщением "Требуемый объект не найден"?
Ниже приведен полный текст полученной ошибки.
{
"error": {
"code": 404,
"message": "Requested entity was not found.",
"errors": [
{
"message": "Requested entity was not found.",
"domain": "global",
"reason": "notFound"
}
],
"status": "NOT_FOUND"
}
}
Исключение:
Caused by: com.google.firebase.messaging.FirebaseMessagingException: Requested entity was not found.
at com.google.firebase.messaging.FirebaseMessaging.handleSendHttpError(FirebaseMessaging.java:266) ~[firebase-admin-5.9.0.jar:?]
Для справочной документации API:
https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages
https://firebase.google.com/docs/reference/fcm/rest/v1/ErrorCode
Ответы
Ответ 1
Да, я испытал это с модулем firebase-admin-node, который недавно был обновлен, чтобы сопоставить NOT_FOUND с "незарегистрированной" ошибкой, поэтому представляется, что это ожидаемый ответ.
https://github.com/firebase/firebase-admin-node/commit/069c9cd50502b0fa7cc6843ea3ef9d8d85dca9b9#diff-ce3edf3ab3ed8957259b6bd4035a0256R617
(Хотя похоже, что статус NOT_FOUND - это ключевая информация, а не сообщение "Запрошенный объект не найден")
Одна вещь, которую вы можете подтвердить, - это незарегистрированные маркеры из разных браузеров/устройств. Т.е., я думаю, что незарегистрированные токены из хром возвращают другую ошибку, чем одна из firefox.
Ответ 2
Мы сталкиваемся с кодом ошибки ошибки 404 при отправке уведомлений на Незарегистрированные устройства через старую конечную точку FCM:
https://fcm.googleapis.com/fcm/send
Документация для API v1 обновлена и не содержит этого кода ошибки.