【发布时间】:2019-08-17 10:53:13
【问题描述】:
消息被报告为成功发送,但没有弹出通知。
使用 onMessage 有时可以记录消息。
请求 FCM 令牌仅适用于 localhost。
在 .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 令牌,但相同的代码在部署时会引发错误。 “请求缺少所需的身份验证...”
我一直与支持@Google 联系,他们向我保证了这个建议,然后另一个会 100% 解决问题。没有任何区别。
我已经尝试过 Firebase 文档和 github 示例中的代码 sn-ps。
如果我能找到有效的现有代码,那将是一个很好的开始,因为我认为经过大约 40 小时的努力才能找到解决方案是没有希望的。
我错过了什么明显的东西吗?
更新......
我找到了两个没有看到通知的原因。
1) 我的电脑有一个设置,似乎部分抑制了显示。出乎意料,因为确实会显示 YouTube 通知。 (打开屏幕最右下角的通知托盘。带有新月符号的“对焦辅助”。如果单击它时显示“开启”或“仅警报”,我认为这会限制所看到的内容。)
2) 我基于 Firebase 文档和视频的假设是 onMessage() 是为了防止用户在网页上时收到通知,并允许开发人员忽略或处理页面内的通知。对了一半。显然,通知被默认忽略,除非 onMessage() 对它们做了什么。文档提供了 onMessage() 的 sn-ps 代码,但只提供了如何登录到控制台。
另外,发现了一个有趣的问题。现在我的电脑已经注册了消息的收件人,即使该收件人已注销并已在另一台设备上登录,它也会收到它们。这听起来像是个问题。
代码的当前工作版本。这在网页/应用程序中(不在 messing-sw.js 文件中
【问题讨论】:
标签: firebase push-notification firebase-cloud-messaging