我有一个带有Firebase Admin Node SDK的AWS lambda后端。
我正在使用admin.messaging().send(msg)
发送FCM消息。当发送方和接收方都正确安装Flutter应用程序时,这可以正常工作。
然而,当我删除接收者应用程序,然后尝试发送消息,admin.messaging().send(msg)
无限期挂起,没有错误,直到lambda超时30秒后。
export async function sendEnquiryMessage(messagingEvent: MessagingEvent, fcmToken: string) {
let content = {
title: `new Message from ABC`,
body: `'${messagingEvent.message?.text ?? ""}' `,
};
console.log("sending a message to FCM: ", fcmToken);
const message = {
notification: {
body: content.body,
title: content.title,
},
data: {
clickaction: 'FLUTTER_NOTIFICATION_CLICK',
id: '1',
status: 'done',
messagingEvent: JSON.stringify(messagingEvent),
},
apns: {
payload: {
aps: {
'mutable-content': 1,
'content-available': 1
}
}
},
token: fcmToken,
};
console.log("MESSAGE TO SEND: ", JSON.stringify(message));
try {
const messageId = await admin.messaging().send(message);
console.log("MESSAGE SENT messageId ID was : ", messageId);
} catch (e) {
console.error('Error FCM message:', e);
}
return true;
}
字符串
如果接收方令牌无效或卸载应用程序后被删除,我预计这会引发某种错误。我有一个try catch,但它没有捕获任何错误。有人经历过这种情况吗?如何修复它?
我再次安装了应用程序并以接收者身份登录,相同的代码再次开始工作。所以我怀疑它与FCM令牌有关,在删除应用程序时无效,并导致send()超时。
1条答案
按热度按时间14ifxucb1#
这是在
console.error('Error FCM message:', e);
上捕获异常后发生的错误在将
e
更改为e.toString()
之后,代码会优雅地处理错误。有人请解释我为什么普通
e
不会工作。