Есть возможность получить событие onload для приложения pwa в целом.Я имел в виду, что мы реализовали пользовательскую логику управления версиями, чтобы сохранить версию приложения на основе поля базы данных (т.е. очистить кэш рабочего сервиса).Проблема здесь в том, что логика почти работает, но когда в базе данных обновляется новая версия, нам нужно очистить кэш соответствующего браузера, чтобы запустить обновление.В ходе дальнейших исследований я обнаружил, что когда приложение pwa открывается, оно сохраняет некий образ кэша, при повторном открытии приложения pwa не будет запускаться код запуска приложения, а загружается приложение из кэша.
Так можно ли получить событие загрузки типа pwa?
В целях тестирования я добавил несколько alert () в компонент приложения, но не сработал при повторном открытии pwaприложение
this.httpService.GetAppVersion(ver).subscribe(
res => {
if (res != null || res !== undefined) {
this.version = res.versionNumber;
ver = localStorage.getItem("appVersion");
if (ver === null || ver === undefined) {
localStorage.setItem("appVersion", "1.0");
ver = "1.0";
}
let localVersion = ver.split(".");
let incomingVersion = this.version.split(".");
let result = this.helperService.compareVersion(
localVersion,
incomingVersion
);
//alert("result : " + result);
if (result === 1) {
const snackBarRef = this.snackBar.open(
"New version available. Load New Version?",
"Yes",
{ duration: 50000000 }
);
snackBarRef.afterDismissed().subscribe(() => {
console.log("The snack-bar was dismissed");
});
snackBarRef.onAction().subscribe(() => {
localStorage.setItem("appVersion", this.version.toString());
this.helperService.Update(); // which clears the cache
setTimeout(() => {
window.location.reload(true);
}, 500);
});
}
}
},
error => {
alert("http error" + JSON.stringify(error));
}
);
по крайней мере код в конструкторе компонента приложения будет выполняться каждый раз, когда приложение открывается после закрытия.