问题标签 [progressive-web-apps]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
service-worker - 我需要从 serviceworker 中访问 localstorage 或 cookie
我希望在推送事件之后进行 fetch 调用,以通过内部 api 获取通知数据,其中用户特定的参数存储在本地存储或 cookie 中,例如 usertype 或 country id .. 我该怎么做?
google-chrome - 是否可以设置 Chrome 显示的通知样式?
在服务工作者注册上使用 showNotification 方法,是否可以设置显示的通知样式,例如文本的颜色?
我对 Android 和桌面平台都很好奇。
push-notification - 如何衡量从我的渐进式 Web 应用程序禁用推送通知的人数?
我在我的渐进式 Web 应用程序中将新的 Web 推送 API 与服务工作者一起使用,但我担心用户在最初启用推送通知权限后会禁用它。
检测用户禁用通知权限(即添加仪器/分析)以便我可以跟踪的最佳方法是什么?
service-worker - 使用 Service Worker 在我的网站首次加载时拦截请求?
TL;DR - 我希望我的服务人员在第一次访问我的网站后立即激活,而不是在第一次刷新后。
细节:
我已经使用服务工作者构建了一个渐进式 Web 应用程序,但注意到在第一次加载时(安装 SW 时)它不会拦截任何网络请求,直到用户刷新页面。
我有什么办法可以让服务人员在安装后立即开始拦截请求?
javascript - 带有数据的 Chrome 浏览器推送通知?
chrome浏览器弹出一个带有数据的气球,如下图
但 Mozilla 表示PushEvent.data仍处于试验阶段
这是一项实验性技术 由于该技术的规范尚未稳定,请查看兼容性表以了解在各种浏览器中使用的正确前缀。另请注意,随着规范的变化,实验技术的语法和行为可能会在未来版本的浏览器中发生变化。
注意:任何浏览器尚不支持此功能。
现在facebook如何检测5个通知?,他们是否重新建立http连接来检测它?或者它真的与PushEvent.data一起出现
javascript - ServiceWorker 更新后如何刷新页面?
我查阅了很多关于 Service Worker 的资源:
- 更新你的 ServiceWorker
- ServiceWorker:Web 平台的革命
- Jake Archibald 的可爱SVGOMG。
但是,在安装新的 ServiceWorker 后,我终生无法弄清楚如何更新页面。无论我做什么,我的页面都停留在旧版本上,只有硬刷新 (Cmd-Shift-R) 才能修复它。1) 关闭选项卡、2) 关闭 Chrome 或 3) 的任何组合都location.reload(true)
不会提供新内容。
我有一个超级简单的示例应用程序,主要基于 SVGOMG。在安装时,我使用 缓存了一堆资源,如果当前版本的主要版本号与活动版本号不匹配(基于 IndexedDB 查找)cache.addAll()
,我也会这样做:skipWaiting()
我正在使用受 semver 启发的系统,其中主要版本号表明新的 ServiceWorker 不能热交换旧的。这适用于 ServiceWorker 方面 - 从 v1.0.0 到 v1.0.1 的碰撞会导致工作人员在刷新时立即安装,而从 v1.0.0 到 v2.0.0,它会等待选项卡关闭并重新打开之前安装。
回到主线程,我在注册后手动更新 ServiceWorker - 否则页面甚至不会得到有可用 ServiceWorker 的新版本的备忘录(奇怪的是,我发现在 ServiceWorker 文献中的任何地方都很少提到这一点):
但是,提供给主线程的内容总是停留在旧版本的页面上(“我的版本是 1.0.0”),无论我将版本增加到 1.0.1 还是 2.0.0。
我在这里有点难过。我希望为 ServiceWorker 版本控制找到一个优雅的 semver-y 解决方案(因此我使用require('./package.json').version
),但在我当前的实现中,用户永远停留在页面的旧版本上,除非他们硬刷新或手动清除所有他们的数据。:/
web-push - 使用 Web 推送通知从 GCM 获取自定义消息
我在 Chrome 中使用 Web 推送通知,它们运行良好。但现在我想在我的通知中传递一条自定义消息。我可以让我的 Service Worker 调用我的站点来获取内容,就像在https://simple-push-demo.appspot.com/上所做的那样——如果我希望每个收件人都看到相同的消息,这很好。
有没有办法获得收件人registration_id
或message_id
GCM 返回的?如果我能得到其中任何一个并将它们包含在服务的回调中,我就可以自定义响应。
此外,关于我们何时可以在对 GCM 的调用中包含有效负载的任何信息?
service-worker - 使用 Service Worker Cache API 和常规浏览器缓存有什么区别?
在我的渐进式 Web 应用程序中,我应该在服务工作者中为我的静态资产使用缓存 API,还是应该只依赖浏览器的本机缓存控制来处理这些资产?有什么不同?
service-worker - 跨多个子域使用服务工作者
如果我的 Web 应用程序包含多个子域,这是否意味着我必须有多个服务人员,每个子域一个?或者我可以拥有一名跨子域工作的服务人员吗?
javascript - Service Worker 的存储限制是多少?
大多数浏览器为 localStorage 提供每个域 5MB 的存储限制。对于服务人员,是否存在这样的内存限制/约束?
我知道网络工作者(服务工作者所基于的)没有这样的限制。但是 Web Worker 并不完全用于资产缓存,而是更多地用于处理(因此 CPU 是那里的主要关注点)。
如果对内存大小没有限制,设计糟糕的网站会导致浏览器崩溃吗?