У меня есть угловой pwa, который проверяет наличие новых версий и перезагружает новый код приложения.Он отлично работает в любом настольном браузере, но когда у меня есть ярлык на домашнем экране, созданный с помощью Chrome, на моем устройстве Android или в мобильном браузере, он не обновляет свой код при появлении новой версии.У меня Chrome 73.0.3683.9 на устройстве Android
Я добавил таймер с rxjs, который проверяет обновления каждые 3 минуты (только для отладки) и перезагружает их, если они есть.
Ядобавив здесь код, и, надеюсь, кто-нибудь сможет помочь мне понять, почему он не работает на мобильных устройствах.
ngsw-config.json
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js"
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}
]
}
updates.service.ts
@Injectable()
export class UpdatesService implements OnDestroy {
private _unsb$ = new Subject();
constructor(private _swUpdate: SwUpdate) {
if (this._swUpdate.isEnabled) {
// every 3 minutes
timer(0, 1000 * 60 * 3)
.pipe(takeUntil(this._unsb$))
.subscribe(() => {
this._swUpdate.checkForUpdate()
.then(() => console.log('Finish checking for updates...'))
})
} else console.log('No service worker allowed');
}
CheckForUpdates() {
this._swUpdate.available
.pipe(takeUntil(this._unsb$))
.subscribe(event => {
this._swUpdate.activateUpdate()
.then(() => window.location.reload())
});
}
ngOnDestroy() {
this._unsb$.next();
this._unsb$.complete();
}
}
app.components.ts
export class AppComponent implements OnInit {
constructor(private _updates: UpdatesService) { }
ngOnInit(): void {
this._updates.CheckForUpdates();
}
}