javascript - 在 Google Chrome for Android 上调用 Javascript Notification API 不能直接从网页工作

标签 javascript android google-chrome notifications progressive-web-apps

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

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

最佳答案

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

service worker 要求背后的主要原因是通知可以超过浏览器的生命周期长度(即用户可以关闭浏览器)并且通知仍将处于 Activity 状态,因此当用户点击通知时 Android需要唤醒“某物”,这个“某物”就是 Service Worker。

Notification Guide很好地介绍了 Web 和 Chrome 中通知的当前状态 - 它稍微侧重于推送消息,但也包含有关如何从 Service Worker 触发通知的所有详细信息。

这似乎是一个需要跳过的额外环节,但它实际上是一个净 yield :即使浏览器关闭,您的通知在点击时仍然有效。

关于javascript - 在 Google Chrome for Android 上调用 Javascript Notification API 不能直接从网页工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33859969/

相关文章:

java - 如何创建自定义 Android View ?使用 XML 对象还是绘图 API?

java - 如何在 Java 中查找 Chrome 下载路径

javascript - 相邻依赖 AJAX(改进)

google-chrome - 如何编译Google Courgette工具?

javascript - 在 OLOO 继承中不共享对象属性

javascript - 添加两个格式为 "HH+:MM:SS"的时间戳

android - 将参数传递给 ListView 行中按钮上的 onclick 监听器

Javascript 匹配 - 不区分大小写

javascript - 需要从 JSON 文件获取名称数据

java - 为什么不在 Android Studio 中显示 progressBar?