我正在构建一个使用 chrome 发送网络推送通知的系统。当有人在他们的台式电脑上收到我的推送通知时,他们会看到通知大约 10 秒钟。如果他们不点击通知,它将在大约 10 秒后消失。
我看到其他网站发送的推送通知不会消失。我相信我没有使用某些设置来使我的消息在单击或退出之前一直保留在屏幕上。有谁知道这个设置或参数?
我正在构建一个使用 chrome 发送网络推送通知的系统。当有人在他们的台式电脑上收到我的推送通知时,他们会看到通知大约 10 秒钟。如果他们不点击通知,它将在大约 10 秒后消失。
我看到其他网站发送的推送通知不会消失。我相信我没有使用某些设置来使我的消息在单击或退出之前一直保留在屏幕上。有谁知道这个设置或参数?
看起来您需要使用“requireInteraction”选项在服务人员中创建通知。只需将其设置为“true”即可表示您需要用户交互的浏览器。这是你如何做到这一点的。
...在您的服务工作者脚本中创建通知时:
self.addEventListener('push', function(e) {
var notification = self.registration.showNotification(
"Hi! Click me!",
{
requireInteraction: true,
body: "I'm not going to disappear"
}
);
e.waitUntil(notification);
});
也不要忘记在点击事件时关闭它:
...稍后在服务工作者脚本中:
self.addEventListener('notificationclick', function(e) {
e.preventDefault();
e.notification.close();
// Do click actions
});
浏览器可比性:不幸的是,并非所有人都支持此选项:Firefox 不支持。有关详细信息,请参阅 Mozilla 参考:https ://developer.mozilla.org/en-US/docs/Web/API/notification/requireInteraction
但它在 Chrome 中运行良好。
您可能想尝试此SO 帖子中建议的解决方案,其中包括以下步骤:
- 为 中提到的所有事件注册侦听器
chrome.notifications
。- 几秒钟后(例如 30 秒)注册一个超时 - 在通知被隐藏之后 - 这将
delete
重新create
通知通知(因此它有效地在屏幕上保持可见。- 如果在步骤 1 中设置的任何侦听器触发,则意味着用户与通知交互,因此取消超时(您不需要重新创建通知)。
有关更多信息,请参阅帖子。