【问题标题】:Do I need APNs certificates if I'm using APNs Auth Key?如果我使用 APNs Auth Key,是否需要 APNs 证书?
【发布时间】:2021-10-30 12:16:51
【问题描述】:

我正在使用 Flutter 和 Firebase 编写一个跨平台应用程序。我一直在努力发送通知,它在 android 上运行良好。我通过firebase管理功能sdk发送消息没有问题。请求如下所示:

const payload = {
  notification: {
    title: title,
    body: body,
  },
}

return admin.messaging().sendToDevice(tokens, payload, {
    mutableContent: true,
    contentAvailable: true,
    apnsPushType: "background",
})

但是当我尝试向 iOS 设备发送消息时,我从 shell 收到以下错误:

"error": {
    "errorInfo": {
        "code": "messaging/third-party-auth-error",
        "message": "A message targeted to an iOS device could not be sent
                   the required APNs SSL certificate was not uploaded or
                   has expired. Check the validity of your development and
                   production certificates."
    },
    "codePrefix": "messaging"
}

我的印象是,由于我使用的是在苹果开发者控制台中生成的 APNs 密钥,因此我不需要任何类型的 SSL 证书。我的密钥已上传到 Firebase 控制台,并且 iOS 设备正在成功报告其设备令牌,所以我不确定为什么我无法收到消息。

我已尝试从 CLI 和 FCM 控制台在线发送消息。两者都失败了。 我还通过后台获取和远程通知启用了推送通知和后台模式。

任何帮助或建议将不胜感激。

【问题讨论】:

  • 您是否以this thread said 生成了APNS 认证?
  • 原来这不是问题所在。坦率地说,我不确定 .pem 文件的用途。 Firebase 现在支持 .p12 文件作为 auth 密钥,所以也许这在某一时刻很有用,但现在可能已经过时了。无论如何感谢您的帮助! @AechoLiu

标签: ios firebase flutter firebase-cloud-messaging firebase-admin


【解决方案1】:

这真的很愚蠢,但问题是 firebase 中的 Bundle ID 不正确。当我第一次连接 firebase 时,它​​给了我一个默认的 bundle id(com.firebase.io 或类似的东西)。后来,当我真正将我的应用程序放在 testflight 上时,我完全称它为别的东西。因此,即使我按照 FlutterFire 网站上的所有说明设置苹果 here,它也无法正常工作,因为捆绑包 ID 不匹配。

所以我不得不删除 firebase 应用程序,替换 googleservicesinfo.plist 文件(认为只更改该文件中的 bundle id 字段可能就足够了(idk 确实如此)),然后在 firbase 控制台中替换它.还必须使用“新”应用重新上传身份验证密钥。

希望这是有道理的。如果您有任何其他问题,请发表评论!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    相关资源
    最近更新 更多