firebase - react native : in-app messages when app is in background

标签 firebase react-native push-notification onesignal event-bus

我一直在研究在 React Native 应用程序中实现消息传递的不同选项,特别是从服务器向客户端代码发送消息。我发现了两个主要选项:推送通知和应用内消息。

推送通知可以通过 Firebase 和 OneSignal 等服务来实现,并且运行良好,但有人声称它们不太可靠,有时消息可能会丢失。推送通知的优点是,无论应用程序处于前台还是后台,它们都可以工作。

应用内消息可以通过事件总线服务实现,例如 SignalR(Azure 或独立)、AWS SNS 或 GraphQL 订阅。这些服务非常可靠,但这种方法仅在应用程序位于前台时才有效。

但是,似乎还有另一种选择似乎不像前两种那么受欢迎。此选项涉及在移动设备上运行 native 后台服务/进程,该服务/进程参与应用程序内消息交换,类似于正常的应用程序内消息传递。后台服务将订阅 SignalR 或 SNS 或 GraphQL,并在收到消息时在设备上显示本地通知。

最后一种方法有什么问题?为什么不喜欢它而不是似乎更常用的混合方法(当应用程序在后台时推送通知,而当应用程序在前台时推送应用程序内消息)?

谢谢!

最佳答案

主要限制是移动设备不允许应用程序在后台保持长期连接打开。此限制在 Android 8 (Oreo) 中得到了更严格的执行(记录在 https://developer.android.com/about/versions/oreo/background#services ),并且在 iOS 上一直如此。某些 VoIP 应用程序存在异常(exception)情况,但一般来说,此规则适用于所有应用程序。

关键原因之一是电池生命周期。保持连接打开需要少量的能量,如果用户有数十个这样的应用程序,那么这将是一个值得注意的问题。因此,Google 和 Apple 都已标准化,向设备开放一个连接,所有通知都通过该连接传递。

就其值(value)而言,iOS 通知实际上非常可靠且一致。 Android由于各OEM厂商的修改,问题较多。 (记录在此处:https://dontkillmyapp.com/)

一种解决方法是,您可以在 Google Play 商店之外分发一个应用程序,通过请求特殊权限来绕过此限制,但是,它仍然会受到 OEM 问题的影响,就像 FCM 一样,而且可能更糟。

关于firebase - react native : in-app messages when app is in background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62527014/

相关文章:

ios - 需要 Firebase Analytics 和 GoogleIDFASupport pod 吗?

java - 如何为聊天室配置所需的身份验证

javascript - 将 svg 转换为 react-native-svg

javascript - 在读取另一个函数之前等待 firebase.auth 初始化

ios - 无法在 iOS 上实现 Firebase Phone Auth

android - 使用 React Native 录制 Espresso 测试

react-native - React Android 中的 native 自动链接问题(RN 0.61.5)

android - 单击通知未打开应用程序/Activity

react-native - React Native - 如何在 React Native 应用程序中使用 WebView 显示我的网站的通知(适用于 Android)

django - 在 Django 中的特定时间触发通知