我正在尝试通过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。
答案 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 thread在this 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>