如何从设备本身发送 Firebase 推送通知? [复制]

Posted

技术标签:

【中文标题】如何从设备本身发送 Firebase 推送通知? [复制]【英文标题】:How to send Firebase Push Notifications from the device itself? [duplicate] 【发布时间】:2020-06-21 06:37:55 【问题描述】:

您好,我需要有关我的 android 应用程序的帮助。 我使用 Firebase 推送通知,但不幸的是,我发现只有一种发送推送通知的方式——从网站本身。

我喜欢创建一个功能,您可以输入标题和内容来向我的所有应用用户发送推送通知。

目标:管理屏幕。 输入标题:这是一个带有标题的编辑文本 输入内容:这是一个带有内容的编辑文本 发送按钮 - 这会将通知发送给所有应用用户。

有没有办法做到这一点? 谢谢!

【问题讨论】:

没有从设备本身仅使用 FCM 向设备发送消息的安全方法。向设备发送消息需要您指定 FCM 服务器密钥。顾名思义,此密钥只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。典型的流程是您的应用程序调用云函数,或写入触发云函数的数据库。 Cloud Function 然后检查内容是否正常,并调用 FCM API 发送消息。 @FrankvanPuffelen 那么为什么没有安全的 API 呢?仅仅为此使用 Cloud Functions 似乎有点矫枉过正...... 如果您希望添加该功能(我绝对希望看到它),您可以做的最好的事情是file a feature request。 【参考方案1】:

您可以使用 POST 请求从设备向此 URL 发送推送通知:

https://fcm.googleapis.com/fcm/send

您需要提供这些标头:

Authorization: key="Firebase server key"
Content-Type: application/json

以及带有通知消息和其他附加信息的请求正文:


  "to": "/topics/topic_name",
  "data": 
    "title": "Notification title",
     "message": "Notification message",
     "key1" : "value1",
     "key2" : "value2" //additional data you want to pass
  

您可以在this Medium article找到更多信息。

【讨论】:

从设备本身执行此操作意味着您将 FCM 服务器密钥包含到您发送给用户的应用程序中。这是一个安全风险,因为获取您的应用程序的恶意现在可以获取该密钥并使用它向应用程序的所有用户发送他们想要的任何消息。 @Frank van Puffelen - 在此人的案例中 - 构建管理屏幕 - 是否可以通过让应用从 Firestore 数据库中检索 FCM 服务器密钥来降低风险> 对于管理员用户?这样,密钥就不会被编译到应用程序中 - 它受到 Firestore 数据库规则的保护。 嗯,...有趣的想法吉姆。

以上是关于如何从设备本身发送 Firebase 推送通知? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何向 ios 应用程序发送 Firebase 推送通知

Firebase 推送通知如何发送到设备

如何从 PHP 网站向 iOS 和 Android 发送推送通知?

Firebase 会惩罚失败的推送通知吗?

从一个信号触发的 Firebase 云功能发送 voip 推送通知

如何在 iOS 中使用 Google Firebase 向特定用户发送推送通知?