代码之家  ›  专栏  ›  技术社区  ›  Ryan Peschel

如何将两名服务人员结合起来?

  •  1
  • Ryan Peschel  · 技术社区  · 4 年前

    我的申请中有两名服务人员。

    第一个是由create-react-app通过workbox自动生成的,负责缓存静态构建资产,如编译的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);
      }
    }
    

    除非在根作用域中,否则两者都不起作用。当限制只有一名服务人员可以使用每个范围时,我怎么能让他们都工作呢?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Jeff Posnick    4 年前

    我建议使用 create-react-app v4 ,以及 cra-template-pwa .

    这将为您提供一个基于Workbox的服务工作者,可以使用其他逻辑进行完全定制,比如您的推送通知代码。

    早期版本 c-r-a 不幸的是,在这方面是不可定制的。