node.js - 使用 Firebase Cloud 功能向特定用户发送通知
问题描述
我在我的firebase群聊应用程序中使用firebase云功能,设置已经完成,但问题是当有人在任何组中发送消息时,所有用户都会收到该消息的通知,包括非组成员。
我只想向特定用户组发送通知,下面是我的 firebase 云功能代码 -
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const _ = require('lodash');
admin.initializeApp(functions.config().firebase);
exports.sendNewMessageNotification = functions.database.ref('/{pushId}').onWrite(event => {
const getValuePromise = admin.database()
.ref('messages')
.orderByKey()
.limitToLast(1)
.once('value');
return getValuePromise.then(snapshot => {
const { text, author } = _.values(snapshot.val())[0];
const payload = {
notification: {
title: text,
body: author,
icon: ''
}
};
return admin.messaging()
.sendToTopic('my-groupchat', payload);
});
});
如果有人可以就此提出建议,这将非常有帮助。
解决方案
根据我们关于评论的对话,我认为问题在于您使用的主题包含所有用户,这就是my-groupchat
主题。解决方案是使用属于该子主题的用户创建一个新主题。
至于如何创建此类主题,本文档中有几个示例,您可以在其中看到您可以在服务器端或客户端进行。在您的情况下,您可以按照服务器端的示例进行操作,因为您需要批量添加它们,但是随着新用户的添加,实现客户端方法可能会很有趣。
推荐阅读
- python - 如何在python中找到点在曲面上的垂直投影
- r - 如何使用 R 和 rvest 轮换代理和 IP 地址
- flutter - 不能无条件调用运算符“*”,因为接收者可以为“null”。尝试向目标添加空检查('!')
- if-statement - SAS 保留语句组
- google-analytics - 向谷歌分析报告转化
- php - 面对419 | 即使表单中存在 CSRF,页面也已过期
- html - 具有 2 个重要的 CSS 优先级
- javascript - javascript websocket : 每个设备一个 websocket 或所有设备一个 websocket
- javascript - tinyMCE 错误的下拉菜单位置
- python - 从 Python 中的联合概率分布生成双变量随机数