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 обновлена ​​и не содержит этого кода ошибки.