我想用安卓应用程序推送一些通知。所以我做了一些研究,但我有点迷茫。
我可能是错的,但我认为我唯一的可能性是将FCM与HTTP请求一起使用:
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"topic" : "foo-bar",
"notification" : {
"body" : "This is a Firebase Cloud Messaging Topic Message!",
"title" : "FCM Message",
}
}
}
但是我看到每个人都使用自己的数据库,我不知道为什么他们需要使用它。我不想使用我自己的数据库,所以如果您有更好的解决方案,请帮助我。
感谢您的所有回复
(对不起我的英语)
向装有 Firebase 云消息传递功能的设备发送消息需要您指定 FCM 服务器密钥。它是示例中Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
标头中的值。
但这里的一个关键问题是,任何拥有您的 FCM 服务器密钥的人都可以不受限制地向您应用的所有用户发送消息。如果您将该密钥嵌入到您的应用程序中,那么有人发现 is 并使用它向用户发送不需要的消息只是时间问题。这就是为什么,顾名思义,FCM 服务器密钥应该只在受信任的环境中使用(例如您控制的服务器/设备或云功能)。
因此,虽然从技术上讲可以将消息从一台 Android 设备发送到另一台 Android 设备,但这样做会使应用的用户面临您不希望的风险。
更多链接到以前的好答案和文章:
- 这个答案来自 FCM 工作的工程师之一迭戈。
- 我的博客文章更详细地描述了上述内容以及如何在Android设备之间安全地发送消息。
- 有关从云端功能安全发送消息的 Firebase 文档示例
- 我的许多答案中有一些是关于使用 FCM 发送设备到设备的消息。
不久前我遇到了同样的问题......为了应对在没有数据库的情况下通过FCM发送通知,我使用了Firebase Cloud Functions和Firebase Admin SDK来执行此操作。当用户收到来自群组或其他人的聊天时,我需要发送通知。我在 Firebase Cloud Functions 中使用了 4 个触发器之一。我使用的那个是onUpdate()
触发器。还有onWrite()
、onDelete()
和onCreate
。所有这些触发器都可以在发生此类更改时发送通知。 然后我使用 Admin SDK 来获取令牌(如果是单个用户,我之前已上传到数据库)或主题(对于群聊,我以群聊命名,因此很容易获得)。由此,我还命名了类型,以便它知道是发送给单个用户还是组。这使我能够有一个侦听器来发送通知,而无需我自己的数据库。全部通过火力基地。另一个要补充的事实是,这是在Node.JS中完成的,但是通过了解Firebase很容易掌握这个概念。
一些有用的链接:
云功能入门
实时数据库触发器
管理员开发工具包设置
管理数据库入门,下一页用于读写(记得使用 Node.JS)
希望这有帮助!