我在我的应用程序中使用HTML5桌面通知。但我对谷歌Chrome Mobile有疑问。据我所知,我需要使用Service Workers在Chrome Mobile上创建新的通知,因为浏览器对它们的处理方式不同(HTML5 Notification not working in Mobile Chrome)。我尝试集成以下Stack Overflow问题的示例(以及一些更多变体),但我无法使其运行。他永远不会到达serviceWorker中的.showNotification方法。我之前从未与服务工作者合作过,所以我不知道我需要做什么,让他们工作。我需要将这个sw.js文件放在项目的某个地方吗?我的应用程序是Java Spring Project,我不知道在哪里放置这个.js文件。我将它放在项目的根目录中,并且在具有此代码的文件所在的目录中,但没有区别。所以,如果有人能帮助我,那就太好了。如果需要更多代码或项目结构来回答问题,我可以提供更多。
if (!("Notification" in window)) {
//
} else if (Notification.permission === "granted") {
var localUserSettings = new LocalUserSettings(loggedInUser);
if (localUserSettings.notificationRights == "granted") {
try {
var notification = new Notification(s, {
body: t,
icon: "/image/" + id,
lang: "de",
tag: notificationId
});
setTimeout(function () {
notification.close();
}, 10000);
} catch (e) {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js').then(function (registration) {
registration.showNotification(s, {
body: t,
icon: "/image/" + id,
vibrate: [200, 100, 200, 100, 200, 100, 200],
tag: notificationId
});
});
}
}
}
}
谢谢:)
编辑:是的,我正在运行来自安全源(https)的代码
答案 0 :(得分:0)
请确保首先通过Notification对象上的requestPermission()
来询问权限,如下所示:
Notification.requestPermission();