Chrome Mobile上的服务工作者的HTML5通知无法正常工作

时间:2015-10-12 08:26:42

标签: javascript html5 mobile

我在我的应用程序中使用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)的代码

1 个答案:

答案 0 :(得分:0)

请确保首先通过Notification对象上的requestPermission()来询问权限,如下所示:

Notification.requestPermission();