javascript - 如何组合两个服务人员?
问题描述
我的应用程序中有两个服务人员。
第一个由 create-react-app 通过工作箱自动生成,负责缓存静态构建资产,例如编译后的 javascript 和 css 文件。
第二个是我手动创建的,负责在用户在应用程序中收到新消息时发送推送通知。
问题是这两个都需要访问根范围,而我最近发现两个服务人员不能共享一个范围。
我该如何调和这个?第二个服务工作者(用于推送通知)仅在用户单击以允许应用程序内的推送通知时注册,如下所示:
function subscribeUserToPush(cb) {
if ('Notification' in window && navigator.serviceWorker) {
return navigator.serviceWorker.register('/sw-notifications.js').then(function(registration) {
let subscribeOptions = {
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array('the-code-qc=')
};
return registration.pushManager.subscribe(subscribeOptions);
}).then(cb);
}
}
除非它们在根范围内,否则两者都不起作用。当限制只有一个服务人员可以使用每个范围时,我怎样才能让它们都工作?
解决方案
我建议使用create-react-app
v4以及cra-template-pwa
.
这将为您提供一个基于 Workbox 的服务工作者,可以使用其他逻辑完全自定义,例如您的推送通知代码。
不幸的是,早期版本c-r-a
在这方面是不可定制的。
推荐阅读
- javascript - javascript的按钮正在显示,但功能不起作用
- http - 使用 HTTP 将文件上传到 Dropbox
- android - 从显示空指针异常的片段调用活动方法
- python - 使用 Python 3 获取 base64 编码字符串的格式
- installshield - Installshield 2008 Professional - 管理员模式安装相关查询
- javascript - 是否可以在 Plotly.js 中显示带有烛台提要(高、低、打开、关闭)值的文本的单独工具提示?
- angular - 角度和 PWA
- android - 如何自定义 EXOPlayer 视频广告 UI?
- android - 链接引用失败 - 在 appcompat 中找不到样式属性“@android:attr/textColor”
- node.js - mongodb更新链接与find?