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

yh2wf1be  于 5个月前  发布在  Node.js
关注(0)|答案(1)|浏览(68)

我有一个带有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()超时。

14ifxucb

14ifxucb1#

这是在console.error('Error FCM message:', e);上捕获异常后发生的错误
在将e更改为e.toString()之后,代码会优雅地处理错误。
有人请解释我为什么普通e不会工作。

相关问题