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

时间:2018-12-17 20:50:44

标签: 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"
    }
}'

这会导致FCM出现以下错误:

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

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

我可以使用上面的示例消息来发送和接收通知, Android设备就可以了。

FCM documentation建议,当包含“通知”块时,当令牌用于IOS设备时,FCM尝试通过APN发送:

  

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

我尝试过的事情:

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

1 个答案:

答案 0 :(得分:0)

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

我的情况是,我遇到了一个白色标签应用程序的问题,经过调查,我发现我的应用程序包 ID (PRODUCT_BUNDLE_IDENTIFIER) 与 Firebase 中的不匹配(我使用的是开发包 ID 而不是生产包 ID ).