一个服务工作进程停止另一个服务工作进程和反向Versa

时间:2016-05-19 14:40:12

标签: android push-notification polymer service-worker onesignal

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

但是,只要我们订阅一个信号(第三方)进行推送通知,他们的服务工作人员就会运行,我们的铂金服务工作人员会停止运行(取消注册)。同样的情况发生在我们再次加载我们的应用程序时,一个信号服务工作者停止运行(取消注册)并且铂金服务工作人员开始运行。

我们希望服务工作者独立工作而不会相互影响。请给我一些建议。

1 个答案:

答案 0 :(得分:1)

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

以下是如何做到这一点:

目前,OneSignalSDKWorker.jsOneSignalSDKUpdaterWorker.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');

我们建议采用上述方法,而不是将我们的服务工作者导入另一个文件,因为我们的Web SDK会覆盖在根范围内注册的其他工作人员,并将其替换为我们的工作人员。

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

有关服务工作者的更多信息can be read here