Firebase云消息返回InvalidApnsCredential,尽管存在有效的P8 APNs Auth密钥。

13

我正在尝试使用Firebase云消息传递向iOS设备发送通知- Firebase控制台中的每个iOS项目都有一个有效的APNs P8认证密钥,这是为此目的从苹果开发者账户新生成的。

我正在使用以下方法:

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文档建议在包含“通知”块时,当令牌是IOS设备时,FCM尝试通过APNs发送:

如果针对iOS设备提供了通知有效载荷或将content_available选项设置为true,则该消息将通过APNs发送,否则将通过FCM连接服务器发送。

我的尝试:

  • 刷新令牌
  • 等待24小时,以便令牌在APNs和FCM服务器环境中传播
  • 使用P12证书
  • 使用P8证书
  • 确保IOS应用程序在Xcode中允许通知
  • 确保Apple开发人员帐户将应用程序设置为允许通知
  • 确保plist,FCM和苹果帐户中的Bundle Ids正确
  • 尝试FCM旧版密钥和服务器密钥

2
APNs身份验证密钥的团队ID是否与应用程序的团队ID匹配? - Jen Person
@JenPerson 是的。 - user32826
1
你在 @Moo 那里找到解决方案了吗?我这里也遇到了同样的问题。 - Constantine
1
@Moo 你找出问题的原因了吗?我也基本上按照你上面提到的一切尝试过了,但仍然得到相同的错误。已经撤销并使用了新的Auth密钥3次,但还是不行。 - akhurad
这里也有同样的问题@Moo,你找到解决方法了吗? - matiszz
2个回答

0

请确保您的Bundle ID正确。

如果不是相同的,请创建一个新的iOS应用程序(配置常规添加应用程序),并确保正确设置名称。

在我的情况下,我使用了最短版本的Bundle ID(com.company)而不是长版本的(com.company.appname)。

这样做,您就不需要重新编译和重新上传应用程序。


0

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

在我的情况下,我遇到了一个白标应用程序的问题,在调查后,我发现我的应用程序包标识符(PRODUCT_BUNDLE_IDENTIFIER)与Firebase中的不匹配(我使用的是开发包标识符而不是生产包标识符)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接