当前位置: 首页 > 知识库问答 >
问题:

尽管存在有效的P8 APNs验证密钥,Firebase云消息仍返回InvalidPNSCredential

孟翰海
2023-03-14

我正在尝试使用Firebase云消息传递向IOS设备发送通知-Firebase控制台中的每个IOS项目都有一个有效的APNs P8 Auth Key,该密钥是为此目的从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文档表明,当包含“通知”块时,当令牌用于IOS设备时,FCM会尝试通过APNs发送:

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

我所尝试过的:

  • 刷新代币
  • 等待24小时,等待令牌在APN和FCM服务器环境中传播
  • 使用P12证书
  • 使用P8证书
  • 确保IOS应用程序允许在Xcode中发送通知
  • 确保Apple开发者帐户将应用程序设置为允许通知
  • 确保plist、FCM和Apple帐户中的捆绑ID正确无误
  • 已尝试FCM旧密钥和服务器密钥

共有1个答案

谷梁英资
2023-03-14

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

在我的案例中,我用一个白色标签的应用程序面对这个问题

 类似资料:
  • 有没有办法在Firebase控制台中重新生成FCM(云消息部分)的API Key?该密钥不可编辑,与Google API控制台中自动生成的密钥不同。由于这个错误的配置,我总是从FCM得到未经授权的401...

  • 问题内容: 我有一个问题,尽管数据库中存在一个键/条目,但Redis命令仍会返回。 我从未在本地计算机上运行的Redis服务器上遇到此问题。令人讨厌的是,没有错误或任何东西。 我使用Redis Desktop Manager来检查Heroku Redis数据库中的内容。 这是获取数据库中值的NodeJS代码: 我可能会做的一件异常事如下:我同时有多达6个处理数据库中的值。 知道什么会导致这种奇怪的

  • 文件。当前密钥、web API密钥和服务器密钥之间有什么区别,在哪里可以找到当前密钥FCM控制台?我找不到它。

  • 我已经从Firebase中导入的Google项目中删除了名为Server key(由Google Service自动创建)的api密钥。 现在,项目设置中的字段服务器密钥-云消息传递为空。我也不能发送通知,我从服务器上得到一个未经授权的401错误。 我能做什么?

  • 我的问题是“什么是Vapid Key?我可以在哪里找到这把钥匙?”

  • 我正在实现将推送通知从我的google应用程序引擎服务器发送到客户端应用程序。向Firebase云消息服务器发送post消息时,我收到401响应(https://fcm.googleapis.com/fcm/send). 我已经按照指示去做了https://firebase.google.com/docs/cloud-messaging/server,所以我用我的服务器密钥发送“Authoriza