firebase react-native 推送通知适用于 iOS 发布版本,但不适用于通过 App Store 发布的应用程序

Posted

技术标签:

【中文标题】firebase react-native 推送通知适用于 iOS 发布版本,但不适用于通过 App Store 发布的应用程序【英文标题】:firebase react-native push notifications working for iOS release builds, but do not work in app released via App Store 【发布时间】:2018-01-10 16:23:37 【问题描述】:

我的推送通知在 android 上的 Google Play 发布版本中按预期工作,平视显示器按预期显示。我还通过 Xcode 在发布版本中按预期工作了推送通知。

问题:在通过 App Store 发布的 ios 版本中没有按预期显示推送通知。

我创建了一个新的APNs Authentication Key 并将其上传到 Firebase 我已开启 swizzling 在 Xcode 中启用自动签名 Firebase、Xcode 和 plist 中的包 ID 相同

我的包版本控制:

"firebase": "^4.8.1",
"firebase-admin": "^5.7.0",

没有错误或崩溃,只是没有显示推送通知。我还更新了 firebase 库,但不确定它是否有任何效果。

我没有使用证书,Firebase 建议使用 APNs 身份验证密钥:

【问题讨论】:

您的代码签名身份设置是什么样的? 你也试过这个吗? ***.com/questions/41169460/… @peter-tao 请查看对原始帖子的编辑以获取两个问题的答案。 尝试将您的 Release Code Signing Identity 设置为 iOS Distribution。归档应用,在手机上安装临时版本,并测试是否可以接收推送通知。 好的,因此将通过在原始问题中添加一些信息来解决此问题。我正在使用firebase-admin 包并通过admin.messaging().sendToDevice(tokens, notification, options) 发送通知。使用这个我添加了content_available: true,这是ios读取aps有效负载并使应用程序即使在后台也可用的方式,但是firebase-admin文档参数实际上是contentAvailable: true并在此之后正确映射到ios。 【参考方案1】:

TL;DR

因此,总而言之,contentAvailable: true 必须在使用 firebase-admin 并通过以下方式向后台 ios 应用程序发送仅数据负载推送通知时在选项参数中设置:

const options = 
  priority: "high",
  contentAvailable: true,   // NOT content_available: true



admin.messaging().sendToDevice(tokens, notification, options)

...

【讨论】:

以上是关于firebase react-native 推送通知适用于 iOS 发布版本,但不适用于通过 App Store 发布的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用firebase推送通知中的onTokenRefresh与getToken有啥区别?

Firebase 推送通知 - 如何跟踪用户 FCM 令牌?

安装 firebase 后生成推送通知

Firebase 云功能不发送异步推送通知

Flutter firebase 消息推送通知格式 3 行

使用推送通知进行实时更新有啥问题?