Я пытаюсь отправить уведомления на устройство 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, так и ключ сервера