Firebase聊天推送通知

10

我正在使用Firebase作为后端开发聊天应用程序。

每当有新消息时,需要向接收者发送推送通知,告知其收到了新消息。这是我第一次做这样的事情,因此我有一个问题:

由于我们没有自己的服务器来处理此问题,我们是否需要第三方提供商(例如Batch)来处理推送通知?如果我没有错,我认为Firebase不支持像这样发送推送通知,而只能从控制台发送。

任何帮助都将是非常好的。


1
如果我没记错的话,Firebase好像不支持像这样发送推送通知,只能从控制台发送。...你是对的。 - Bhavin Bhadani
4个回答

21

希望有人能发现这个有用,它在我的案例中有所帮助。

目前,使用Firebase提供的解决方案无法实现设备到设备的推送通知。如果你需要那种功能,可以尝试使用OneSignal,它是免费且非常易于实现的。


2
这应该是设备到设备推送消息的最佳答案,例如您在消息应用中所需的。 - n6xej
1
这正是我需要的。已经搜索了好几天了。谢谢。 - Jason
1
请解释一下如何做到,我在 OneSignal 上找不到任何信息。 - Sanjith Bravo Dastan
我也没有找到有关使用Firebase实时数据库进行设备到设备推送的相关文档。请告知我们相关参考资料。谢谢。 - Rajan Maharjan
1
@RajanMaharjan 这与 Firebase 无关。 当您在 Firebase 中执行某个操作(保存、更新)并希望向另一个用户发送通知时,必须添加一些 OneSignal 代码来处理通知。 请查看 OneSignal 文档。 https://documentation.onesignal.com/docs/ios-native-sdk#section-sending-notifications - ZassX
显示剩余3条评论

7

新版 Firebase 有两个功能可以向用户发送通知:

  • Firebase Cloud Messaging - Google Cloud Messaging 的下一代推送服务
  • Firebase Notifications - 建立在 Cloud Messaging 之上,让你通过 Firebase 控制台轻松向用户发送通知

要使用 Cloud Messaging 发送消息,需要在请求中指定授权密钥。由于知道此密钥可以代表你发送消息,因此你需要将其访问权限限制为受信任的进程。这确实可以是服务器,但任何可信的进程都可以。


它可以作为服务器,你是什么意思?除了获取服务器,还有其他方法吗? - Erik
您可以在任何可信的硬件上运行受信任的进程。我经常在我的笔记本电脑上运行它们,因为我的许多受信任的进程不需要始终可用。其他一些我在小型常开系统上运行,例如在家中的树莓派上,因为它们需要比我的笔记本电脑更好的在线可用性。而其他进程则在(微型)GCE/EC2实例上运行。所有这些都有一个共同点:它们运行在不公开访问的硬件上。 - Frank van Puffelen
哦,我明白了。至于推送通知方面,运行这样的进程并将推送通知委托给Firebase需要多少硬件资源?这是否可以由在家中使用的树莓派完成,或者我应该找一个合适的网络托管公司?如果后者更好,您有任何建议哪个提供商是合适的吗? - Erik
1
你将会监听一些端点(可以是你起草的内容,也可以是例如 Firebase 数据库),并调用 HTTP 端点发送每条消息。除非你期望立即处理大量消息,否则我建议从一些小规模的实验开始。 - Frank van Puffelen
@FrankvanPuffelen,我需要关于Firebase推送通知服务的帮助。我的问题是,每当我的应用用户在线并使用FB进行身份验证时,我都会更新Firebase数据库,因此每当我的FB好友在线时,我想向所有其他FB好友发送通知,告诉他们“用户”在线。 - veeresh kumbar
显示剩余5条评论

1
(iOS) 有点晚了,但也许可以帮助未来的任何人解决这个问题。我最近遇到了这个问题,我的解决方案是利用设备组方法。因此:
1. 创建一个包含注册 ID(或推送设备 ID 数组)的设备组。 2. 然后将推送发送到该设备组。 3. 删除设备组。
请参见:https://firebase.google.com/docs/cloud-messaging/ios/device-group

-5

你可以使用Http POST请求从Android发送推送通知,我使用Retrofit来实现这个功能,例如:

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

Http Headers:

Content-Type: application/json
Authorization: key=Your_FCM_Key

正文(Json):

{
 "to" : "user_device_id"
  "data" : {
    "message": "test message",
    "color": "black"
  },
  "notification" : {
     "title": "Testing FCM",
     "body":"My first notification",
     "tag":"chat_msg",
     "color" : "#FF4081",
     "icon" : "ic_stat_onesignal_default", 
   }
}

您可以使用高级 REST 客户端 "Google Chrome 扩展程序" 进行测试


1
FCM_KEY 应该保密,不要直接嵌入到你的应用程序中。 - Suyash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接