Я пытаюсь отправить уведомления на устройство IOS с помощью Firebase Cloud Messaging - каждый проект IOS в консоли Firebase имеет действительный ключ аутентификации P8 APNs, заново сгенерированный для этой цели из учетной записи разработчика 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.
Что я пробовал:
- Обновление токенов
- Ожидание 24 часа для распространения токенов в APN и средах сервера FCM
- с использованием сертификатов P12
- используя сертификаты P8
- при условии, что приложение IOS разрешает уведомления в Xcode
- , при условии, что учетная запись Apple Developer имеет приложение, разрешающее уведомления
- , при условии, что идентификаторы пакетов правильны вplist, FCM и учетная запись Apple
- пробовали и устаревший ключ FCM, и ключ сервера