我正在构建一个 PWA,但这也适用于我生成的所有 chrome 通知 vai
showNotification
。
期望的行为是横幅与通知正文一起出现一会儿,然后消失。
发生的情况是,我收到通知声音,通知托盘中显示一个图标(顶部的小图标列表),并且当我向下滑动时,图标出现在通知中,但从未显示横幅。
这是我生成通知的简单方法:
fbsw.showNotification("TITLE",{body:"Body",icon:"/PWA/icon.png",requireInteraction: true});
我也在服务工作者程序中使用它
self.addEventListener('push', function(event) {
var data = event.data.json();
console.log("std push payload",data);
if ("data" in data) {
data=data.data;
}
event.waitUntil(self.registration.showNotification(data.title, {body:data.body,icon:data.icon}));
});
我已经查看了 showNotifications 的所有选项,并尝试了任何我认为可能有效的选项,例如上面的
requireInteraction
,但没有成功。
我不确定这是 Android 版 Chrome 的问题还是我编写代码的方式的问题。我在两部不同的手机上测试过,问题是一样的。
这个问题是由几个不同的问题引起的。
安装后,Android 上的 PWA 具有自己的通知设置,并且当通知事件通过与应用程序关联的 Service Worker 路由时,这些通知遵循该应用程序的规则。
但是,Firebase 云消息推送消息似乎会激活与 chrome 应用程序关联的自己的 Service Worker 版本。因此需要通过它修改设置才能看到横幅。
chrome>settings>Notifications>sites
启用“在屏幕上弹出”选项时,通知将生成横幅。
理想情况下,我会通过 PWA 发送通知,但我还没有弄清楚如何让它做到这一点。