使用firebase云消息使用android客户端应用程序生成通知

时间:2018-03-05 00:47:49

标签: android firebase push-notification firebase-cloud-messaging

我想用Android应用程序推送一些通知。所以我做了一些研究,但我很少失去。

我可能错了,但我认为我唯一的可能是使用带有HTTP请求的FCM:

 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",
      }
   }
}

但是我看到每个人都使用他们自己的数据库而我不知道为什么他们需要使用它。我不想使用自己的数据库,所以如果你有更好的解决方案,请帮助我。

感谢您的所有回复

(对不起我的英文)

2 个答案:

答案 0 :(得分:1)

使用Firebase Cloud Messaging向设备发送消息要求您指定FCM服务器密钥。它是示例中Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA标题中的值。

但关键问题是,任何拥有FCM服务器密钥的人都可以无限制地向您应用的所有用户发送消息。如果您将该密钥嵌入到您的应用中,那么有人发现并且使用它向您的用户发送不需要的消息只是时间问题。这就是为什么,顾名思义,FCM服务器密钥只应在受信任的环境中使用(例如您控制的服务器/设备或云功能)。

因此,虽然技术上可以将消息从一个Android设备发送到另一个Android设备,但这样做会使您的应用用户面临您不应该想要的风险。

以前的好答案和文章的更多链接:

答案 1 :(得分:0)

我曾经遇到同样的问题......为了应对在没有数据库的情况下通过FCM发送通知,我使用了Firebase云功能和Firebase Admin SDK来执行此操作。当用户收到群组或其他人的聊天时,我需要发送通知。我使用了Firebase云功能中的4个触发器之一。我使用的是onUpdate()触发器。还有onWrite()onDelete()onCreate。所有这些触发器都可以在发生此类更改时发送通知。然后我使用Admin SDK获取令牌(如果它是单个用户,我之前已经上传到数据库)或主题(对于群聊,我以小组聊天命名,因此很容易获得)。从这里,我也命名了类型,以便知道是发送给单个用户还是组。这让我有一个监听器来发送通知,而不需要我自己的数据库。全部通过firebase。另外一个事实是,这是在Node.JS中完成的,但是通过了解Firebase可以很容易地掌握这个概念。

一些有用的链接:

Getting Started with Cloud Functuons

Realtime Database Triggers

Admin SDK Setup

Admin Database Getting Started, next pages for read and write(remember to use Node.JS)

希望这有帮助!