【问题标题】:How can I get different types of notification?如何获得不同类型的通知?
【发布时间】:2018-05-21 12:36:03
【问题描述】:

我不知道如何从我要发送的 index.js 中的 Firebase 云功能向设备发送不同类型的通知(cmets 通知)(如通知)。

我正在使用此代码向设备获取以下通知,但我不知道如何获取其他通知。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);   
exports.sendNotification = functions.database.ref('/notification/{user_id}/{notification_id}').onWrite((change, context) => {
const user_id = context.params.user_id;
const notification_id = context.params.notification_id;
console.log('We have a notification to send to  : ', user_id);
const fromUser = admin.database().ref(`/notification/${user_id}/${notification_id}`).once('value');
return fromUser.then(fromUserResult => {
        const from_user_id = fromUserResult.val().from;
        const from_message = fromUserResult.val().message;
        console.log('You have new notification from  : ', from_user_id);
const userQuery = admin.database().ref(`users/${from_user_id}/username`).once('value');
const deviceToken = admin.database().ref(`users/${user_id}/device_token`).once('value');

return Promise.all([userQuery,deviceToken]).then(result =>{
const userName = result[0].val();
const token_id = result[1].val();

  const payload1 = {
    notification:{
      title: "some is following you",
      body: `${userName} is following you`,
      icon: "default",
      click_action : "alpha.noname_TARGET_NOTFICATION"
    },
    data:{
       from_user_id:from_user_id
    }
  };
  return admin.messaging().sendToDevice(token_id, payload1).then(result=>{
console.log("notification sent");

});

})
.then(response => {
    console.log('This was the notification Feature');
    return true;
}).catch(error => {
  console.log(error);
  //response.status(500).send(error);
  //any other error treatment
});

  });
});

【问题讨论】:

  • 这样想。如果您旁边有 3 个按钮,当您单击其中一个按钮时,它会向云发送一个字符串值。它旁边的按钮将执行相同的操作,但具有不同的值。因此,不是硬编码“有人跟着你”,而是插入请求传入的值。例如 request.like_string。
  • 你告诉我应该在我的 android studio 项目中创建一个字符串“有人在关注你”并将其传递给服务器以显示该通知
  • 我有 click_action ...那怎么样

标签: javascript android node.js push-notification firebase-cloud-messaging


【解决方案1】:

您可以更改发送到 /notification/${user_id}/${notification_id} 节点的内容,以包含可让您在云函数中识别和创建不同通知的字段。

例如,您可以添加一个类型字段,然后:

return fromUser.then(fromUserResult => {
    const from_user_id = fromUserResult.val().from;
    const from_message = fromUserResult.val().message;
    const from_type = fromUserResult.val().type;

然后您可以根据类型构建通知:

if(from_type === NOTIFICATION_FOLLOW){
   payload1 = {
    notification:{
      title: "some is following you",
      body: `${userName} is following you`,
      icon: "default",
      click_action : "alpha.noname_TARGET_NOTFICATION"
    },
    data:{
       from_user_id:from_user_id
    }
  };
}else{
  //set payload1 for a different notification
}

添加有效负载所需的任何字段并根据需要扩展控制结构。

【讨论】:

  • 我怎样才能返回 admin.messaging().sendToDevice(token_id, payload1)
  • 我应该在每个有效负载之后返回这个
  • 如果你在条件语句之前声明了var payload1,那么你可以根据每个条件进行赋值。那么你就不需要改变你的 return 语句,只要确保它在条件之后。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 2016-08-05
  • 2019-12-19
  • 1970-01-01
  • 2023-03-20
  • 2020-08-29
相关资源
最近更新 更多