Firebase Cloud Messaging возвращает InvalidApnsCredential, несмотря на наличие действительного ключа аутентификации P8 APNs

Я пытаюсь отправить уведомления на устройство IOS с помощью Firebase Cloud Messaging - каждый проект IOS в консоли Firebase имеет действительный ключ аутентификации APN P8, только что созданный для этой цели из учетной записи разработчика Apple.

Я использую такой подход:

curl -X POST \
  https://fcm.googleapis.com/fcm/send \
  -H 'Authorization: key=<My Key>' \
  -H 'Content-Type: application/json' \
  -H 'cache-control: no-cache' \
  -d '{
    "to": "<Device Token>",
    "notification": {
        "title": "Push Notification Test to IOS",
        "body":"Push Notification Test to IOS"
    },
    "data": {
        "message": "Push Notification Test to IOS"
    }
}'

Это приводит к следующей ошибке FCM:

{
    "multicast_id": <Id>,
    "success": 0,
    "failure": 1,
    "canonical_ids": 0,
    "results": [
        {
            "error": "InvalidApnsCredential"
        }
    ]
}

Если я удалю из сообщения блок «уведомление», FCM отвечает успешно, но устройство ничего не получает.

Я могу отправлять и получать уведомления с помощью приведенного выше примера сообщения на устройства Android.

В документации FCM говорится, что когда Блок «уведомление» включен, FCM пытается отправить через APN, когда токен предназначен для устройства IOS:

Если предоставляется полезная нагрузка уведомления или для параметра content_available установлено значение true для сообщения на устройство iOS, сообщение отправляется через APN, в противном случае оно отправляется через сервер подключения FCM.

Что я пробовал:

  • Обновление токенов
  • Ожидание распространения токенов в средах APN и FCM в течение 24 часов
  • с использованием сертификатов P12
  • с использованием сертификатов P8
  • гарантирует, что приложение IOS разрешает уведомления в Xcode
  • убедитесь, что в учетной записи Apple Developer есть приложение, разрешающее уведомления
  • Убедитесь, что идентификаторы пакетов верны в учетных записях plist, FCM и Apple.
  • попробовал как устаревший ключ FCM, так и ключ сервера

person Moo    schedule 17.12.2018    source источник
comment
Соответствует ли идентификатор группы ключа аутентификации APN идентификатору группы приложения?   -  person Jen Person    schedule 17.12.2018
comment
@JenPerson да.   -  person Moo    schedule 18.12.2018
comment
Вы когда-нибудь находили решение @Moo? У меня здесь та же проблема.   -  person Constantine    schedule 26.07.2019
comment
@Moo Вы узнали, в чем проблема? Я также в значительной степени следил и пробовал все, что вы упомянули выше. По-прежнему возникает та же ошибка. Отменил и использовал новый ключ аутентификации 3 раза, и это не сработало.   -  person akhurad    schedule 01.08.2019


Ответы (1)


InvalidApnsCredential не означает, что проблема напрямую связана с сертификатом APNS или ключом.

В моем случае я столкнулся с этой проблемой с приложением с белой меткой, и после расследования я обнаружил, что мой идентификатор пакета приложения (PRODUCT_BUNDLE_IDENTIFIER) не совпадает с идентификатором в Firebase (я использовал идентификатор пакета разработки вместо производственного).

person MoOx    schedule 03.06.2021