尽管存在有效的P8 APN身份验证密钥,Firebase Cloud Messaging仍返回InvalidApnsCredential

Moo*_*Moo 5 ios firebase firebase-cloud-messaging

我正在尝试使用Firebase Cloud Messaging将通知发送到IOS设备-Firebase控制台中的每个IOS项目都有一个有效的APNs 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"
    }
}'
Run Code Online (Sandbox Code Playgroud)

这导致来自FCM的以下错误:

{
    "multicast_id": <Id>,
    "success": 0,
    "failure": 1,
    "canonical_ids": 0,
    "results": [
        {
            "error": "InvalidApnsCredential"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如果我从消息中删除了“ notification”块,则FCM会成功响应,但是设备上什么也没有收到。

我可以使用上述示例消息向Android设备发送和接收通知。

FCM文档表明,当被包括在“通知”块,FCM尝试经由的APN发送当令牌是用于IOS设备:

如果提供了通知有效负载,或者将发送到iOS设备的消息的content_available选项设置为true,则通过APN发送消息,否则通过FCM连接服务器发送消息。

我尝试过的

  • 刷新令牌
  • 等待24小时让令牌在APN和FCM服务器环境中传播
  • 使用P12证书
  • 使用P8证书
  • 确保IOS应用允许Xcode中的通知
  • 确保Apple Developer帐户将该应用程序设置为允许通知
  • 确保plist,FCM和Apple帐户中的Bundle ID正确
  • 尝试了FCM旧式密钥和服务器密钥

MoO*_*oOx 0

InvalidApnsCredential并不意味着问题与 APNS 证书或密钥直接相关。

就我而言,我在使用白色标签的应用程序时遇到了这个问题,经过调查,我发现我的应用程序捆绑包 ID (Product_BUNDLE_IDENTIFIER) 与 Firebase 中的应用程序捆绑包 ID 不匹配(我使用的是开发捆绑包 ID,而不是生产捆绑包 ID)。