微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Angular 中读取当前 PWA 的版本哈希?

如何解决如何在 Angular 中读取当前 PWA 的版本哈希?

我希望能够读取我的 Angular PWA 的当前活动哈希。但是我看不到这样做的任何机制。

SwUpdate 对象提供了 observables,允许您在新版本激活或可用时读取当前版本的哈希值但似乎没有公开任何用于获取哈希值的静态方法当前版本。

class SwUpdate {
  available: Observable<UpdateAvailableEvent>
  activated: Observable<UpdateActivatedEvent>
  unrecoverable: Observable<UnrecoverableStateEvent>
  isEnabled: boolean
  checkForUpdate(): Promise<void>
  activateUpdate(): Promise<void>
}

我希望能够读取诸如 SwUpdate.current 之类的内容来读取当前哈希值(比如 a518f9f1ab65954c2eafa02fec134fa54b391651),而无需等待 availableactivated事件。这可能吗?

解决方法

您可以使用 SwUpdate 中的 @angular/service-worker 来做到这一点。例如,您可以像这样在 app.component.ts 上检查:

import { Component,OnInit } from '@angular/core';
import { SwUpdate } from '@angular/service-worker';

@Component({
  selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.scss'],})
export class AppComponent implements OnInit {

  constructor(private swUpdate: SwUpdate) {}

  checkForUpdate() {
    if (this.swUpdate.isEnabled) {
      this.swUpdate.available.subscribe((event) => {
        console.log('Update is available!');
        console.log('Current version: ' + event.current.hash);
        console.log('New available version: ' + event.available.hash);
      });
    }
  }

  ngOnInit() {
    this.checkForUpdate();
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。