gpt4 book ai didi

firebase - 消息已成功发送,但在 Firebase Cloud Messaging 中看不到通知

转载 作者:行者123 更新时间:2023-12-05 05:11:31 28 4
gpt4 key购买 nike

消息报告为成功发送,但没有弹出通知出现。

使用 onMessage 有时可以记录消息。

请求 FCM token 仅适用于本地主机。

在 .com 站点上尝试时,错误消息取决于我使用的是 PC 还是 chromebook - 生成的错误消息是不同的。

我使用过 2 种不同的设备,但始终使用 Chrome 浏览器。云函数将消息和FCM响应写入函数日志,确认发送成功。

当我从收件人网页删除 onMessage 时,没有任何通知的迹象。

网页在这些试用期间是打开的。这是 web/javascript。

通知权限设置为允许,在两个设备中。

我花了几个小时进行网络搜索,试图找到关于尝试什么的任何提示。

firebase-messaging-sw.js

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js');


firebase.initializeApp({
'messagingSenderId': '593287500713'
});

const messaging = firebase.messaging();

随网页运行的相关代码

 messaging.onMessage(function (payload) {
console.log('Message received. ', payload);
});

我假设在没有 onMessage 的情况下,通知应该基于 Firebase SDK 出现,但事实并非如此。错误的假设

在后台时,什么也不会出现。 (我认为通知应该自动出现。)

我可以在本地主机上运行时请求和接收 FCM token ,但相同的代码在部署时会引发错误。 “请求缺少必需的身份验证...”

我一直在联系支持@Google,他们向我保证这个建议,然后另一个会 100% 解决问题。没有任何区别。

我已经尝试了 Firebase 文档中的代码片段以及 github 示例。

如果我能找到可用的现有代码,那将是一个很好的开始,因为我认为在经过大约 40 小时的努力后找到解决方案是没有希望的。

我是否遗漏了一些明显的东西?

更新....

我发现了两个看不到通知的原因。

1) 我的 PC 的设置似乎部分抑制了显示。意外,因为确实会显示 YouTube 通知。 (打开屏幕最右下角的通知托盘。带有新月符号的“聚焦辅助”。如果单击时显示“打开”或“仅警报”,我认为这会限制所见内容。)

2) 我基于 Firebase 文档和视频的假设是 onMessage() 是为了防止用户在网页上时收到通知,并允许开发人员忽略或处理页面内的通知。对了一半。显然,通知默认被忽略,除非 onMessage() 对它们做了一些事情。文档提供了 onMessage() 的代码片段,但仅提供了如何登录到控制台。

另外,发现一个有趣的问题。现在我的电脑已经注册了消息的收件人,即使该收件人已注销并已在另一台设备上登录,它也会收到消息。这听起来像是个问题。

代码的当前工作版本。这进入网页/应用程序(不在 messaging-sw.js 文件中

最佳答案

消息传递的介绍性视频表明,当有人访问网站时弹出来自网站的通知是糟糕的用户体验。因此,代码可以包含 onMessage() 以忽略通知或在页面内处理通知。

文档提供了一个 onMessage 版本,它只将通知记录到控制台,并且只有关于做其他事情的评论。

文档的其他部分解释了系统会自动显示通知。

因此我推断如果没有 onMessage() 通知会自动出现。

看来我错了

我花了很多时间来解决这个问题并找到一些代码来显示通知。 (即使现在我也不确定我是否已经掌握了正在发生的事情,但以下似乎有效)

这会出现在网页/应用程序中。 (不在 messaging-sw.js 中。把它放在那里会抛出“使用窗口方法”的错误)

[请注意,我还发现我的 PC 设置似乎允许 YouTube 发送通知,但阻止显示 FCM 通知。 (见有问题的解释)

到目前为止,我已经在用户打开网页、后台网页和关闭浏览器时进行了测试。通知以默认声音显示,并列在通知托盘中。

如果收件人退出网页并在另一台设备上登录,也会发生这种情况。邮件会继续发送到同一台设备。

消息发送到设备而不是用户]

 messaging.onMessage(function (payload) { 
try{ //try???
console.log('Message received. ', payload);

noteTitle = payload.notification.title;
noteOptions = {
body: payload.notification.body,
icon: "typewriter.jpg", //this is my image in my public folder
};

console.log("title ",noteTitle, " ", payload.notification.body);
//var notification = //examples include this, seems not needed

new Notification(noteTitle, noteOptions);//This can be used to generate a local notification, without an incoming message. noteOptions has to be an object
}
catch(err){
console.log('Caught error: ',err);
}
});

``````````



关于firebase - 消息已成功发送,但在 Firebase Cloud Messaging 中看不到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com