目前,我正在开发 PWA。
我想实现一个推送通知系统,幸运的是浏览器公开了Push API。到目前为止我已经完成了这部分工作,我可以在 Service Worker 中接收推送事件。
但是当显示通知时,通知会在后台“静默”接收。
但是当安装 PWA 时,默认情况下会禁用这种“弹出”样式的消息(至少我是这么认为的)。默认行为导致通知仅在通知托盘中购买选项,而不会显示在弹出窗口上方。
当我进入 PWA 通知的设置时,有一个启用弹出通知的选项:“显示为弹出窗口” 当我启用此选项时,我得到了所需的结果。不过,我希望这是默认行为,而不必告诉网络应用程序的每个用户更改其设备上的设置。
我在服务工作线程中的推送事件监听器中使用了通知代码。
self.registration.showNotification('New message', {
body: payload,
});
在 Samsung Galaxy S22 上使用 Chrome 作为(默认)浏览器进行测试。
有谁知道为什么这是默认行为以及是否有解决方案?
提前致谢
我有一个网络应用程序,并且添加了通知功能,但我必须在 Galaxy s22 设置上手动自定义它,以使其弹出并发出特定的声音。 为了从 Service Worker 推送通知,需要调用
self.registration.showNotification(title, options)
,其中“title”是通知标题的字符串,“options”是一个对象,其中包含用于自定义通知的属性。
从该功能的 MDN 参考站点 https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification 可以清楚地看出,您想要实现的此功能是不可能的,因为无法在选项对象中指定通知的弹出行为,因此不幸的是,此功能在浏览器上不可用。