8

我正在使用 JavaScript Notification API 向我的用户显示一条小消息。它适用于我测试过的所有桌面浏览器,包括 Chrome ......但不适用于 Android 版 Chrome(至少是 KitKat)。我读到的所有内容都表明,Android Chrome 于 2015 年 4 月支持通知 API,该应用程序甚至具有通知权限设置......但是当我从其中调用 new Notification(...) 时没有任何反应。事实上,即使是官方的 Mozilla Notification API 演示页面也没有显示它们,尽管能够获取权限信息等。

为了使通知与 Android Chrome 兼容,我需要做些什么特别的事情吗?

4

2 回答 2

7

在 Android 版 Chrome 上,您只能通过Service Worker打开通知。服务工作者是与浏览器一起运行的脚本,即使页面或浏览器当前关闭也可以加载。

Service Worker 要求背后的主要原因是通知可以超过浏览器的生命周期(即用户可以关闭浏览器)并且通知仍将处于活动状态,因此当用户点击通知时 Android 需要唤醒“东西”起来了,这个“东西”就是Service Worker。

通知指南很好地介绍了 Web 和 Chrome 中通知的当前状态 - 它稍微关注推送消息,但也包含如何从 Service Worker 触发通知的所有细节。

这似乎是一个额外的障碍,但它实际上是一个净收益:即使在浏览器关闭时,单击时您的通知仍然有效。

于 2015-12-07T11:18:34.583 回答
5

检查兼容性:http ://caniuse.com/#feat=notifications

“部分支持” 虽然正如 Kinlan 所提到的,但使用 Web Service Workers 是可能的。

navigator.serviceWorker.register('sw.js');
Notification.requestPermission(function(result) {
  if (result === 'granted') {
    navigator.serviceWorker.ready.then(function(registration) {
      registration.showNotification('Notification with ServiceWorker');
    });
  }
});

sw.js文件可以只是一个零字节文件。

信用到期:HTML5 通知在移动 Chrome 中不起作用

于 2016-02-09T22:54:13.750 回答