首页 > 解决方案 > 如何在不刷新页面的情况下更新 Angular 中的旧版本 Service Worker?

问题描述

我有一个 Angular 应用程序,我曾经在其中通过提示要求用户在发布新版本时更新应用程序。但是,现在我需要在没有用户输入的情况下强制更新。对于更新,我一直在使用 Angular Service Worker 和 SwUpdate 类。

我的问题是,当我使用据称强制自动更新的代码发布新版本时,使用旧版本应用程序的用户会不断看到要求他们更新的提示。如果他们确实更新了应用程序,则可以正常工作,但如果他们不更新,旧版本将不再与新实现的功能兼容。

这是我的新版本的自动更新代码:

 public checkForUpdates() {
        // console.log("checkForUpdates");
        // console.log(this.updates.isEnabled);
        if (this.updates.isEnabled) {
            this.updates.available.subscribe((event) => {
                console.log("current version is", event.current);
                console.log("available version is", event.available);

                this.updates.activateUpdate().then(() => document.location.reload());

                //document.location.reload();
                //this.promptUser(event);
            });
            this.updates.activated.subscribe((event) => {
                console.log("old version was", event.previous);
                console.log("new version is", event.current);
            });
        }
    }

我怎样才能让现有的旧版本用户在没有他们输入的情况下进行更新?似乎如果他们不刷新或手动更新应用程序,他们将不会获得新版本。

标签: angularangular-service-worker

解决方案


推荐阅读