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

时间:2019-05-20 08:22:25

标签: firebase firebase-cloud-messaging firebase-admin

我正在尝试通过FCM从Firebase Cloud函数通过以下代码发送多播通知:

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

并且没有任何推送通知被发送。每个响应都包含一条错误消息,并带有相同的消息:“未找到请求的实体”。

我在Google Cloud控制台中启用了API(Firebase文档中未提及任何API,但显然这是必需的)。我不知道还能做什么。我可以找到的所有其他问题都与HTTP API或旧版API有关。我正在使用最新版本的Firebase Admin SDK。

3 个答案:

答案 0 :(得分:0)

弄清楚了。显然,当我尝试发送给的FCM令牌不再注册时,就会发生此错误,如lib = find_library(libname) dll = None if lib is not None: try: LOG.debug("Trying `CDLL(%s)`", lib) dll = CDLL(lib, mode=mode) except OSError: LOG.debug("Failed `CDLL(%s)`", lib) pass if not dll and fallbacks is not None: for name in fallbacks: try: LOG.debug("Trying `CDLL(%s)`", name) dll = CDLL(name, mode=mode) except OSError: # move on to the next fallback LOG.debug("Failed `CDLL(%s)`", name) pass if dll: LOG.debug("Library path: %r", lib or name) LOG.debug("DLL: %r", dll) return dll else: # No shared library was loaded. Raise OSError. raise OSError( "Could not find lib {0} or load any of its variants {1}.".format( libname, fallbacks or [])) 错误代码所证明。在那种情况下,我只需要从用户的令牌中删除此令牌并完成操作即可。

答案 1 :(得分:0)

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

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

成为

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

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

答案 2 :(得分:0)

面对同样的问题,这对我来说很成功。

Info.plist文件中,我对此进行了更改

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

进入

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