Невозможно зарегистрировать работника службы - PullRequest
0 голосов
/ 03 апреля 2019

Мое приложение находится под ионным 4 угловым.Я установил pwa с помощью:

ng add @angular/pwa --project app

Затем я собрал с: ionic build --prod

и развернул в firebase с: firebase deploy

Но у меня есть2 проблемы:

1) баннер "добавить на экран" не отображается при просмотре приложения с моего телефона Android.Даже с этим кодом на корневом URL:

showBtn: boolean = false;
  deferredPrompt;
  constructor(private modalController: ModalController, public authUser: AuthUserService, private router: Router){}

  ionViewWillEnter(){
    window.addEventListener('beforeinstallprompt', (e) => {
      // Prevent Chrome 67 and earlier from automatically showing the prompt
      e.preventDefault();
      // Stash the event so it can be triggered later on the button event.
      this.deferredPrompt = e;

    // Update UI by showing a button to notify the user they can add to home screen
      this.showBtn = true;
    });

    //button click event to show the promt

    window.addEventListener('appinstalled', (event) => {
     alert('installed');
    });


    if (window.matchMedia('(display-mode: standalone)').matches) {
      alert('display-mode is standalone');
    }
  }

2) Когда я запускаю аудит маяка, я получаю это предупреждение:

Does not register a service worker that controls page and start_url

Я пытался удалить, переустановить, восстановить всено ничего не работает.На ионных документах я не могу найти никакой подсказки, чтобы решить эту проблему.

1 Ответ

1 голос
/ 04 апреля 2019

Через много дней я смог заставить его работать.

Сначала я добавляю следующий фрагмент кода в файл firebase.json к свойству хостинга:

{
        "source": "ngsw-worker.js",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache"
          }
        ]
      }

Затем я добавляю этоскрипт в моем index.html:

<script>
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('ngsw-worker.js')
      .then(() => console.log('service worker installed'))
      .catch(err => console.error('Error', err));
  }
</script>

Теперь это работает!

...