2

我们正在使用白金服务工作者(Google Polymer Element)来实现我们应用程序的离线和缓存功能。当我们第一次打开我们的应用程序时,聚合物元素的服务人员开始运行。该应用程序运行良好。

但是,一旦我们订阅了一个信号(第 3 方)的推送通知,他们的 Service Worker 就会运行,而我们的 Platinum Service Worker 就会停止运行(取消注册)。同样的情况发生在我们再次重新加载我们的应用程序时,一个信号服务工作者停止运行(取消注册)并且白金服务工作者开始运行。

我们希望两个 service worker 独立工作而不会相互影响。请给我一些建议。

4

1 回答 1

1

我们的服务工作人员OneSignalSDKWorker.jsOneSignalSDKUpdaterWorker.js覆盖在最顶层(站点根)服务工作人员范围内注册的其他服务工作人员;是否可以将您的其他服务人员导入我们的服务人员?

以下是如何做到这一点:

目前两者的内容OneSignalSDKWorker.js和内容都OneSignalSDKUpdaterWorker.js包含以下内容:

importScripts('https://cdn.onesignal.com/sdks/OneSignalSDK.js');

请同时修改OneSignalSDKWorker.jsOneSignalSDKUpdaterWorker.js导入您的其他服务工作人员文件的内容,如下所示:

importScripts('https://example.com/my-other-service-worker.js');
importScripts('https://cdn.onesignal.com/sdks/OneSignalSDK.js');

我们建议使用上述方法,而不是将我们的 service worker 导入另一个文件,因为我们的 web SDK 会覆盖在根范围内注册的其他 worker,并用我们的替换它们。

请注意,所有这一切仅适用于您尝试将服务工作者注册到根范围(如https://example.com/other-worker.js)。如果您尝试仅在特定子目录下注册服务工作者,例如https://example.com/some-subdirectory/other-worker.js,则不应替换您的服务工作者。

可以在此处阅读有关服务人员的更多信息。

于 2016-06-17T22:37:21.230 回答