Firebase 管理 NodeJS SDK - admin.messaging().send(msg) 无效 FCM 令牌超时

问题描述 投票:0回答:2

我有一个带有 Firebase 管理节点 SDK 的 AWS lambda 后端。

我正在使用

admin.messaging().send(msg)
发送 FCM 消息。当发送者和接收者 flutter 应用程序安装正确时,此功能运行良好。

但是,当我删除接收器应用程序然后尝试发送消息时,

admin.messaging().send(msg)
无限期挂起,没有错误,直到 30 秒后 lambda 超时。


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() 期间超时。

node.js aws-lambda firebase-cloud-messaging firebase-admin
2个回答
0
投票

捕获异常后发现这是一个错误,

 console.error('Error FCM message:', e);

e
更改为
e.toString()
后,代码可以优雅地处理错误。

有人请解释一下为什么普通的

e
不起作用。


0
投票

您有关于此问题的任何消息吗? 我在代码中(在 AWS Lambda 函数内部)遇到了同样的问题,并且我不知道是什么导致 send() 函数超时。

欢迎任何帮助。 谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.