Javascript 一名信号服务人员和一名应用程序服务人员

Javascript 一名信号服务人员和一名应用程序服务人员,javascript,vuejs2,progressive-web-apps,service-worker,onesignal,Javascript,Vuejs2,Progressive Web Apps,Service Worker,Onesignal,我正在尝试在我当前的Vue应用程序中实现一个信号。我已经为PWA安排了一名服务人员,因此有一个信号与之冲突。我确实找到了,但我发现它有点矛盾 具体而言: 建议同时修改OneSignalSDKWorker.js和OneSignalSDKUpdateWorker.js以导入其他服务工作者脚本 所以我做了: importScripts('/service-worker.js'); importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWor

我正在尝试在我当前的Vue应用程序中实现一个信号。我已经为PWA安排了一名服务人员,因此有一个信号与之冲突。我确实找到了,但我发现它有点矛盾

具体而言:

建议同时修改OneSignalSDKWorker.js和OneSignalSDKUpdateWorker.js以导入其他服务工作者脚本

所以我做了:

importScripts('/service-worker.js');
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDKWorker.js');

重新加载页面显示正在触发来自我的服务人员的安装事件,所以我想这部分工作正常

我感到困惑的是这一部分:

此外,请确保修改您站点的代码以注册OneSignalSDKWorker.js,而不是您自己的工作人员。您可以使用如下代码执行此操作:
navigator.serviceWorker.register('/OneSignalSDKWorker.js')

实施部分说要做:

<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<script>
    window.OneSignal = window.OneSignal || [];
    OneSignal.push(function() {
        OneSignal.init({ ... });
    });
</script>

window.OneSignal=window.OneSignal | |[];
OneSignal.push(函数(){
OneSignal.init({…});
});
但如果我把它放在:

<script>
    if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
            navigator.serviceWorker.register('/OneSignalSDKWorker.js');
        });
    }
</script>

if(导航器中的“serviceWorker”){
window.addEventListener('load',()=>{
register('/OneSignalSDKWorker.js');
});
}
我看到我的service worker安装事件被触发了两次。所以现在我不确定这里是哪一部分?如果没有
寄存器('/OneSignalSDKWorker.js')
部分代码,那么服务人员就可以安装,为什么我甚至需要这个部分?它是否已经集成在一个信号init或SDK中?那么文件是否过时了

<script>
    if ('serviceWorker' in navigator) {
        window.addEventListener('load', () => {
            navigator.serviceWorker.register('/OneSignalSDKWorker.js');
        });
    }
</script>