Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Firebase云功能向特定用户发送通知_Node.js_Firebase_Firebase Realtime Database_Google Cloud Functions_Firebase Cloud Messaging - Fatal编程技术网

Node.js 使用Firebase云功能向特定用户发送通知

Node.js 使用Firebase云功能向特定用户发送通知,node.js,firebase,firebase-realtime-database,google-cloud-functions,firebase-cloud-messaging,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,Firebase Cloud Messaging,我在我的firebase群组聊天应用程序中使用firebase cloud功能,设置已经完成,但问题是当某个群组中有人发送消息时,所有用户都会收到该消息的通知,包括该群组的非成员 我只想向特定于组的用户发送通知,下面是我的firebase云功能代码- const functions = require('firebase-functions'); const admin = require('firebase-admin'); const _ = require('lodash'); admi

我在我的firebase群组聊天应用程序中使用firebase cloud功能,设置已经完成,但问题是当某个群组中有人发送消息时,所有用户都会收到该消息的通知,包括该群组的非成员

我只想向特定于组的用户发送通知,下面是我的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);
 });
});

如果有人能就此提出建议,这将非常有帮助。

根据我们关于评论的对话,我认为问题在于您使用的主题包含所有用户,这就是
我的groupchat
主题。解决方案是与属于此子主题的用户创建一个新主题


至于如何创建这样的主题,这里有几个例子,在这里您可以看到您可以在服务器端或客户端完成。在您的情况下,您可以遵循服务器端的示例,因为您需要批量添加这些示例,但随着新用户的添加,实施客户端方法可能会很有趣。

根据我们关于评论的对话,我相信问题在于您使用的主题包含所有用户,这是我的群组聊天主题。解决方案是与属于此子主题的用户创建一个新主题


至于如何创建这样的主题,这里有几个例子,在这里您可以看到您可以在服务器端或客户端完成。在您的案例中,您可以遵循服务器端的示例,因为您需要批量添加它们,但随着新用户的添加,实现客户端方法可能会很有趣。

代码看起来是正确的,因此我假设问题在于您订阅主题成员的方式,你能分享一下你是如何订阅这个主题的成员的吗?在我的代码中,我只传递{pushId},所以当对数据库执行任何写操作时,它会生成通知,但是,当在组中执行写入操作并且用户是该组的成员时,我希望收到通知。
my groupchat
是您希望共享消息的用户或整个用户组所在的主题的名称吗?如果是后者,则必须创建一个单独的主题并向其订阅成员,以便只有在收到该主题后才能接收该主题。数据库中的整个用户组,但不是所有用户,只有发起消息的组成员。那么,我如何通过云功能(动态创建的组)订阅每个组呢。在您的例子中,您可以按照服务器端的示例进行操作,因为您需要批量添加它们。让我知道这是否有帮助。代码看起来是正确的,所以我假设问题在于您订阅主题成员的方式,您可以分享您订阅主题成员的方式吗?在我的代码中,我只传递{pushId},因此在对数据库执行任何写操作时,它会生成通知,但是,当在组中执行写入操作并且用户是该组的成员时,我希望收到通知。
my groupchat
是您希望共享消息的用户或整个用户组所在的主题的名称吗?如果是后者,则必须创建一个单独的主题并向其订阅成员,以便只有在收到该主题后才能接收该主题。数据库中的整个用户组,但不是所有用户,只有发起消息的组成员。那么,我如何通过云功能(动态创建的组)订阅每个组呢。在您的例子中,您可以按照服务器端的示例进行操作,因为您需要批量添加它们。让我知道这是否有帮助。