cheth прикрепленный URL моей консоли:

дил за этой статьей здесь (которая, к сожалению, не завершена), пытаясь научиться дружить с PWA и Firebase Cloud Messaging на основе Ionic 3:Push-уведомления с FCM

Что я сделал:

как советовалось в статье, добавлены библиотеки FCM в service-worker.js:

'use strict';
importScripts('./build/sw-toolbox.js');
importScripts('https://www.gstatic.com/firebasejs/4.9.0/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/4.9.0/firebase-messaging');

firebase.initializeApp({
  // get this from Firebase console, Cloud messaging section
  'messagingSenderId': '47286327412'
});

const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler((payload) => {
  console.log('Received background message ', payload);
  // here you can override some options describing what's in the message; 
  // however, the actual content will come from the service sending messages
  const notificationOptions = {
    icon: '/assets/img/appicon.png'
  };
  return self.registration.showNotification(notificationTitle, notificationOptions);
});

self.toolbox.options.cache = {
  name: 'ionic-cache'
};

// pre-cache our key assets
self.toolbox.precache(
  [
    './build/main.js',
    './build/vendor.js',
    './build/main.css',
    './build/polyfills.js',
    'index.html',
    'manifest.json'
  ]
);

// dynamically cache any other local assets
self.toolbox.router.any('/*', self.toolbox.cacheFirst);

// for any other requests go to the network, cache,
// and then only use that cached resource if your user goes offline
self.toolbox.router.default = self.toolbox.networkFirst;

Затем создал провайдера на основе Firebase Messaging здесь:

import { Injectable } from "@angular/core";
import * as firebase from 'firebase';
import { Storage } from '@ionic/storage';

@Injectable()
export class FirebaseMessagingProvider {
  private messaging: firebase.messaging.Messaging;
  private unsubscribeOnTokenRefresh = () => {};

  constructor(
    private storage: Storage
  ) {
    this.messaging = firebase.messaging();
  }

  public enableNotifications() {
    console.log('Requesting permission...');
    return this.messaging.requestPermission().then(() => {
        console.log('Permission granted');
        // token might change - we need to listen for changes to it and update it
        this.setupOnTokenRefresh();
        return this.updateToken();
      });
  }

  public disableNotifications() {
    this.unsubscribeOnTokenRefresh();
    this.unsubscribeOnTokenRefresh = () => {};
    return this.storage.set('fcmToken','').then();
  }

  private updateToken() {
    return this.messaging.getToken().then((currentToken) => {
      if (currentToken) {
        // we've got the token from Firebase, now let's store it in the database
        return this.storage.set('fcmToken', currentToken);
      } else {
        console.log('No Instance ID token available. Request permission to generate one.');
      }
    });
  }

  private setupOnTokenRefresh(): void {
    this.unsubscribeOnTokenRefresh = this.messaging.onTokenRefresh(() => {
      console.log("Token refreshed");
      this.storage.set('fcmToken','').then(() => { this.updateToken(); });
    });
  }
    
}

И теперь во время инициализации приложения я вызываю enableNotifications () и получаю сообщение об ошибке, которое говорит о том, что работник службы по умолчанию не найден (404):

При получении скрипта был получен неверный код ответа HTTP (404). : 8100 / firebase-messaging-sw.js Не удалось загрузить ресурс: net :: ERR_INVALID_RESPONSE

Если я перемещаю service-worker.js, связанный с firebase, в сервисный работник по умолчанию в папке WWW - я получаю общую ошибку от Firebase (Ошибка, не удалось зарегистрировать сервисного работника).

ВОПРОСЫ: - есть ли свежий путеводитель по Ponic & FCM Ionic 3? - На высоком уровне какая разница в регистрации сервисных работников в Ionic 3 против Angular? Я смотрел урок об Angular, но не могу понять, как сделать то же самое в Ionic 3.

Ответы на вопрос(2)

Ваш ответ на вопрос