【问题标题】:How to send push notifications FROM an android app with Firebase?如何从带有 Firebase 的 android 应用程序发送推送通知?
【发布时间】:2017-11-27 18:54:27
【问题描述】:

我想在我的应用中开发一项新功能,让我可以向安装了该应用的所有用户发送通知。我一直在搜索并找到有关如何将上游消息发送到 Firebase Cloud Messaging 的信息,但没有找到任何解释如何直接向其他用户发送通知的信息。

【问题讨论】:

标签: java android firebase firebase-cloud-messaging firebase-notifications


【解决方案1】:

有办法做到这一点。您可以使用 Firebase 数据库、云消息传递和 Node.js 来实现这一点。你可以在这篇文章中找到如何做到这一点:https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html

但是,如果您认为这太复杂了,您可以使用其他一些提供程序,例如 OneSignal 或 Back4app,它们基于解析平台,并且比上面的示例更简单,并且还有一个免费的平原。如何在 Back4app 中使用 Cloud 代码设置通知 看看这个例子: https://docs.back4app.com/docs/android/push-notification/push-cloud-code/

【讨论】:

    【解决方案2】:

    选项 1 - 直接从 Firebase 发送消息

    如果您尝试使用 Firebase 向您的 Android 应用的所有用户发送消息,您应该查看有关如何"Send Messages with the Firebase Console" 的文档。

    选项 2 - 从应用程序向服务发送消息;然后到 Firebase

    如果您尝试从 Android 应用向 Firebase 发送消息,然后再从 Firebase 向其他用户发送消息,则您可能缺少堆栈/基础架构的一个关键组件,即网络服务。该服务充当 Firebase 云消息传递和您的应用程序之间的中间人,有效地决定如何处理来自应用程序的消息,以及如何向 Firebase 发送命令,包括目标对象(哪些设备)。您可以选择此类服务:

    • 应用服务器(在您最了解或最合适的任何环境中编写)
    • 其他一些受信任的环境,例如Cloud Functions for Firebase

    查看有关与Firebase Cloud Messaging Server 交互的文档以了解更多详细信息。

    设置完成后,您的流程看起来更像这样:

    Android 应用(消息发送者) -> 消息处理服务 -> Firebase 云消息传递 -> Android 应用(目标设备)

    选项 3 - 使用上游消息

    上游消息仍然使用单独的应用服务器来处理设备发送的消息。在这种情况下,应用程序通过 FCM 向服务发送上游消息,然后服务对该上游消息执行某些操作并将 ACK(确认)消息发送回发送设备,因此它可以通过回调处理它。应用服务在处理上游消息时,可以命令 firebase 向目标设备发送推送通知。

    总体而言,您可能还需要完成一些步骤。

    您也可以直接在Firebase Cloud Messaging page 或youtube video giving a general background to FCM 上找到更多信息。

    YouTube 上还有一个使用 Firebase 演示上游和下游消息的视频,名为 Upstream and Downstream messages using FCM - Android。

    【讨论】:

      【解决方案3】:

      您可以通过将 POST 发送到 https://fcm.googleapis.com/fcm/send 并使用 Server key 作为 Authorization 来做到这一点。但是您需要知道收件人令牌或主题。

      https://firebase.google.com/docs/cloud-messaging/http-server-ref https://firebase.google.com/docs/cloud-messaging/auth-server#authorize-http-requests

      【讨论】:

      • 我在这里看到一个与安全性相关的大问题:这意味着 Android 应用程序的所有用户都可以访问我的服务器密钥,这是为了保密。
      • @AlejandroBertinelli 我猜,您可以对其进行编码以保密。是的,如果我们谈论架构,这不是最佳实践,但问题是“如何……”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2012-10-24
      • 2019-09-11
      • 2017-04-16
      • 1970-01-01
      • 2020-07-12
      相关资源
      最近更新 更多