Я исследовал и знаю, что многие люди спрашивали об этой проблеме, но я все еще не могу решить возникшую у меня проблему. Поэтому я задам вопрос еще раз.
Я разрабатываю приложение, использующее Angular PWA. Я хочу, чтобы каждый раз после развертывания приложение отображало сообщение, и пользователь нажимал на него, чтобы перезагрузить приложение.
В настоящее время я использовал SwUpdate для проверки доступной новой версии, но он не запрашивает сообщение для me (я изменил заголовок в файле index. html и обновил код в некоторых других компонентах).
Я создал службу под названием PwaUpdateService, в этой службе я определил метод checkForUpdates (). После этого я вызываю этот метод в AppComponent.
Вот мой код:
import {SwUpdate} from '@angular/service-worker';
import {Injectable} from '@angular/core';
import {interval} from 'rxjs';
@Injectable()
export class PwaUpdateService {
updateSubscription;
constructor(public updates: SwUpdate) {
}
public checkForUpdates(): void {
this.updateSubscription = this.updates.available.subscribe(event => this.promptUser());
if (this.updates.isEnabled) {
// Required to enable updates on Windows and ios.
this.updates.activateUpdate().then();
interval(60 * 60 * 1000).subscribe(() => {
this.updates.checkForUpdate().then(() => {
// console.log('checking for updates');
});
});
}
// Important: on Safari (ios) Heroku doesn't auto redirect links to their https which allows the installation of the pwa like usual
// but it deactivates the swUpdate. So make sure to open your pwa on safari like so: https://example.com then (install/add to home)
}
promptUser(): void {
this.updates.activateUpdate().then(() => {
window.location.reload();
});
}
}
В AppComonent:
export class AppComponent {
constructor(private screen: ScreenService,
private sw: PwaUpdateService) {
// check the service worker for updates
this.sw.checkForUpdates();
}
}
Это код, по которому я следовал руководству Angular, но мне не повезло.
Спасибо, что нашли время, чтобы посмотреть мои вопросы, надеюсь, вы поможете мне решить эту проблему.