gpt4 book ai didi

java - 功能通知在聊天应用程序 Firebase 中不起作用

转载 作者:行者123 更新时间:2023-12-02 08:39:19 25 4
gpt4 key购买 nike

我制作了一个 Android 聊天应用程序,并使用 firebase 中的功能设置了自动通知,一切正常,但当我发送消息时,通知不会出现

这是 firebase 函数中的日志 -

firebase logs

这是index.js 文件 -

'use strict'


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_id = event.params.notification_id;

if(!event.data.val())
{
return console.log('A Notification has been deleted from the database : ', notification_id);
}

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

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

const userQuery = admin.database().ref(`Users/${from_user_id}/name`).once('value');
const deviceToken = admin.database().ref(`/Users/${user_id}/token`).once('value');

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

if(type == "request")
{
const payload =
{
data:
{
title : "You have a Friend Request",
body: `${userName} wants to be your friend!`,
icon: "default",
click_action : "com.namandevloper.satyampublic_PROFILE_TARGET_NOTIFICATION",
from_user_id : from_user_id
}
};

return admin.messaging().sendToDevice(token_id, payload).then(response =>
{
console.log(`${userName} (${from_user_id}) sent friend request to ${user_id}`);
});
}
else if(type == "message")
{
const payload =
{
data:
{
title : "You have a new Message",
body: `${userName} messaged you!`,
icon: "default",
click_action : "com.namandevloper.satyampublic_CHAT_TARGET_NOTIFICATION",
from_user_id : from_user_id
}
};

return admin.messaging().sendToDevice(token_id, payload).then(response =>
{
console.log(`${userName} (${from_user_id}) send a message to ${user_id}`);
});
}
else if(type == "accept")
{
const payload =
{
data:
{
title : "You have a new friend",
body: `${userName} accepted your request!`,
icon: "default",
click_action : "com.namandevloper.satyampublic_PROFILE_TARGET_NOTIFICATION",
from_user_id : from_user_id
}
};

return admin.messaging().sendToDevice(token_id, payload).then(response =>
{
console.log(`${userName} (${user_id}) accepted request by ${from_user_id}`);
});
}
});
});
});

Firebase 功能中的日志显示 - 无法读取未定义的属性“user_id”

可能是什么问题?

最佳答案

更改此:

exports.sendNotification = functions.database.ref('/Notifications/{user_id}/{notification_id}').onWrite(event => {
const user_id = event.params.user_id;
const notification_id = event.params.notification_id;
if(!event.data.val())
{
return console.log('A Notification has been deleted from the database : ', notification_id);
}

进入此:

exports.sendNotification = functions.database.ref('/Notifications/{user_id}/{notification_id}').onWrite((change,context) => {
const user_id = context.params.user_id;
const notification_id = context.params.notification_id;

if(!change.after.val())
{
return console.log('A Notification has been deleted from the database : ', notification_id);
}

The context parameter provides information about the function's execution. Identical across asynchronous functions types, context contains the fields eventId, timestamp, eventType, resource, and params.

查看指南:

https://firebase.google.com/docs/functions/beta-v1-diff

关于java - 功能通知在聊天应用程序 Firebase 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61481867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com