尝试使用Firebase Cloud Functions中的Firebase Cloud Messaging发送推送通知时未找到请求的实体

z5btuh9x  于 2023-06-07  发布在  其他
关注(0)|答案(5)|浏览(436)

我尝试通过FCM从Firebase Cloud函数发送组播通知,代码如下:

const message = {
    tokens: recipients,
    notification: {
        title: title,
        body: body
    },
    data: {
        projectPartnerId: projectPartnerId
    }
};
return admin.messaging().sendMulticast(message);

而且没有推送通知被发送。每个响应都包含具有相同消息的错误:“未找到请求的实体”。
我在Google Cloud控制台中启用了API(Firebase文档中没有提到,但显然这是必要的)。我不知道我还能做什么我能找到的所有其他问题都与HTTP API或遗留API有关。我使用的是最新版本的Firebase Admin SDK。

0ve6wy6x

0ve6wy6x1#

想明白了显然,当我试图发送的FCM令牌不再注册时,就会发生此错误,如"messaging/registration-token-not-registered"错误代码所示。在这种情况下,我只需要从用户的令牌中删除此令牌并完成它。

xzv2uavs

xzv2uavs2#

正如@user1123432所说,我只是做了下面的事情:

try {

// Logic to send a push notification goes here

 catch (e: Exception) {
    logger.error("Firebase Notification Failed: ${e.message}")
     if (e is FirebaseMessagingException) {
        logger.info("Firebase Notification token for the user: ${user.userName}, errorCodeName: ${e.errorCode.name}, messagingErrorCodeName: ${e.messagingErrorCode.name}")
        if (e.errorCode.name == "INVALID_ARGUMENT" || e.errorCode.name == "NOT_FOUND" || e.messagingErrorCode.name == "UNREGISTERED") {
            myNotificationTokenRepo.clearTokenByUserId(user.uuid)
            logger.info("Deleted Firebase Notification token for the user: ${user.userName}")
        }
    }
}
ukxgm1gy

ukxgm1gy3#

我最近在为iOS应用程序设置推送通知时遇到了这个问题。我通过this answer在GitHub线程上发布的修复程序找到了一个成功的修复程序。问题是在Info.plist中,FirebaseAppDelegateProxyEnabled被设置为bool而不是字符串,所以:

<key>FirebaseAppDelegateProxyEnabled</key>
    </false>

成为

<key>FirebaseAppDelegateProxyEnabled</key>
    <string>0</string>

GitHub评论还描述了通过媒体帖子实现flavours,并将Firebase/Messaging添加到Podfile,这与使用Flutter构建iOS应用程序有关。我的项目是用Flutter构建的,但我们不需要围绕flavours实现任何东西,也不需要更新Podfile,因为它是由Flutter自己管理的。

b1payxdu

b1payxdu4#

在面对同样的问题后,这对我来说是个好主意。
Info.plist文件中,我更改了以下内容

<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

变成这样

<key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string>
nwo49xxi

nwo49xxi5#

我也遇到过同样的问题,当我重新连接到数据库时,问题得到了解决,确保所有令牌都处于活动状态并在使用中,并删除未使用的令牌或更新它们

相关问题