当前位置: 首页 > 知识库问答 >
问题:

如何使用节点FCM发送通知。js到特定包名[重复]

印曜灿
2023-03-14

我已经在一个项目上工作了很长一段时间,我一直在使用Firebase。我已经实现了应用程序所需的所有Firebase功能。但我唯一的困惑是,FCM。

基本上,我有两个应用程序链接到Firebase项目。一个是消费者应用程序,另一个是管理员应用程序。现在,我正试图通知管理员何时有新订单到达,或何时有用户想与他们聊天。我已经成功地通过消费者应用程序使用node js和Firebase功能通知用户,但我无法通知管理员。这两个应用程序都有不同的软件包名称。但是,无论何时,一个应该通知管理员的触发器发生,它都会将通知发送给消费者应用程序而不是管理员应用程序。

我已经研究了很长一段时间,我唯一能收集到的是,我应该使用主题。但是我想知道,如果我使用主题,它是否仍然会将通知发送到消费者应用程序。因此,我需要询问是否可以使用node.js.向特定的包名称发送FCM通知,如果不可能,我如何实际实现它。提前多谢了

编辑1:这是我的索引。js代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotification = functions.database.ref('/notifications/{user_id}/{notification_id}').onWrite(event => {

  const user_id = event.params.user_id;
  const notification = event.params.notification_id;

  if(!event.data.val()){
  return console.log('A Notification has been deleted from Firebase');
}

console.log('The User ID is : ', user_id);

const fromUser = admin.database().ref(`/notifications/${user_id}/${notification}`).once('value');

return fromUser.then(fromUserResult => {

  const from_user_name = fromUserResult.val().from;
  const msg_type = fromUserResult.val().type;
  const message = fromUserResult.val().msg;
  console.log('Notification from: ', from_user_name);

  const deviceToken = admin.database().ref(`/Users/${user_id}`).once('value');
  console.log('Created deviceToken');
  return deviceToken.then (result => {

    const token_id = result.val().device_token;
    const order_id = result.val().order_id;
    console.log('Token ID: ', token_id);

    var payload;

    const token_id_aman = "eDYB-...ClU";

    if (msg_type == "text") {

      payload = {

        notification: {
        title : `New message from ${from_user_name}`,
        body: `${from_user_name}: ${message}`,
        icon: "default",
        tag: "text",
        sound: "default",
        click_action: "com.androidsword.techno.miniclip_TARGET_CHAT_NOTIFICATION"
        },
        data: {
          order_id: order_id,
          user_id: user_id,
          device_token: token_id
        }

        };

        if (from_user_name != "Admin") {

          payload = {

            notification: {
            title : `New message from ${from_user_name}`,
            body: `${from_user_name}: ${message}`,
            icon: "default",
            tag: "text",
            sound: "default",
            click_action: "com.androidsword.techno.adminminiclip_TARGET_NOTIFICATION"
            },
            data: {
              order_id: `${order_id}`,
              user_id:`${user_id}`,
              device_token:`${token_id}`
            }

            };

          return admin.messaging().sendToDevice(token_id_aman, payload).then(response => {
          console.log('This was a notification feature to Admin');
        });

      }

    }

    else if (msg_type == "status_changed") {

      payload = {

        notification: {
        title : `Order Status Changed`,
        body: `${message}`,
        icon: "default",
        tag: "status_changed",
        sound: "default",
        }
        };

    }

    else if (msg_type == "order") {

      payload = {

        notification: {
        title : `New Order`,
        body: `A new order has arrived`,
        icon: "default",
        tag: "order",
        sound: "default",
      }
        };

        return admin.messaging().sendToDevice(token_id_aman, payload).then(response => {
        console.log('This was a notification feature to Admin to inform about new order');
      });

    }


      return admin.messaging().sendToDevice(token_id, payload).then(response => {

      console.log('This was a notification feature');


    });

  });


});

});

共有1个答案

翟默
2023-03-14

您不能发送到某个包名称。您只能发送到主题或特定的设备id

 类似资料:
  • 我想从服务器端向iOS应用程序发送通知。我在服务器端使用PHP和FCM发送通知。我有firebase项目的服务器密钥。 我将以下内容发送给FCM 但我希望在不使用“to”子句的情况下全局发送通知。需要帮助吗

  • 我编写了一个RESTAPI。NET Core现在需要创建一个推送通知到Firebase Cloud Messaging(FCM)。对于测试,我使用Firebase控制台,但我需要通过编程来完成。我已经通过谷歌浏览了Firebase的文档和一些例子,但我更困惑了。 我认为可以通过常规创建消息,但有人可以发布一个简单的工作示例以便我可以拿起它吗?或者也许,我的理解完全错误?

  • 我正在开发ionic应用程序,需要使用FCM发送推送通知。我只想测试两个设备的推送通知。因为我已经有了这两个设备的令牌。 有没有办法使用angularjs向FCM发送RESTAPI POST请求,以向设备发送推送通知?

  • 我在android应用程序中使用nodeJS和mongodb作为后端服务,并使用FCM向用户发送推送通知。为了实现这一点,我在MongoDB上保存了firebase注册令牌。 我想在相应的用户在MongoDb服务器上添加数据时向他们发送推送通知。 这是我在下面添加数据库数据的代码。 现在,一旦数据添加到数据库中,我想向用户发送通知。有人请让我知道如何才能实现所需的任务。任何帮助都将不胜感激。 谢谢

  • 我正在rails 5中编写一个Api Rest,使用gem'fcm'发送通知。我已经在android应用程序中配置了firebase,我可以从firebase控制台成功发送通知,但从rails api我无法在设备中接收通知,这是我的代码: 这是我的rails控制器: 我从邮递员执行这是执行控制器的路线: http://localhost:3000/acciones/enviar?here 将设备令

  • 我对通过FCM实现云消息感到困惑。要向iOS设备发送远程(推送)通知,APN需要iOS设备令牌。但是,Firebase应用程序不与APNs接口,它与FCM接口,FCM与APNs接口。但是通过FCM向任何客户端发送推送通知(或消息)需要FCM令牌。这是否意味着Firebase应用程序向iOS设备发送推送通知时不需要iOS设备令牌?