Ionic android Не удалось зарегистрировать ServiceWorker: при загрузке скрипта произошла неизвестная ошибка - PullRequest
0 голосов
/ 17 апреля 2019

Что у меня есть

Я работаю с Firebase и Ionic 4.

Я получил этот плагин cordova-plugin-firebase@2.0.5

Я сделалpush-messages.service.ts, который выглядит следующим образом:

  initPushNotification() {

    this.firebase.getToken()
      .then(token => {
        // Get token
      })
      .catch(error => console.error('Error getting token :', error));

    this.firebase.onTokenRefresh()
    .subscribe((token: string) => {
      // Get token
    });

    // When app is active (foreground) and receive a notification
    this.firebase.onNotificationOpen()
      .subscribe(data => {
        // Get new notification
      });
  }

  displayBannerNotification(message: string, interlocutor: User) {
    const options = new HttpHeaders()
      .set('Content-Type', 'application/json')
      .set('Authorization', `key=${environment.firebase.serverKey}`);

    const body = {
      'notification': {
        'title': interlocutor.nickname,
        'body': message,
        'click_action': 'https://www.x.com/'
      },
      // tslint:disable-next-line:max-line-length
      'to': 'TOKEN-DEVICE'
    };

    this.http.post( 'https://fcm.googleapis.com/fcm/send', JSON.stringify(body), { headers: options })
      .subscribe(data => { console.log('Message envoyé ! ', data); });
  }

initPushNotification() вызывается из app.component.ts.

Я узнал, что мне пришлось внедрить работника сервиса.Но, по-видимому, они не доступны на устройстве (Android).Я все равно это сделал:

importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js');

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

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 Webtask
  const notificationTitle = "Background message title"
  const notificationOptions = {
    body: 'Background Message body.',
  };
  return self.registration.showNotification(notificationTitle, notificationOptions);
});

ЧТО ХОЧУ

Для запуска уведомления баннера из firebase для моего приложения в фоновом режиме

ЧТО Я ПОЛУЧИЛ

Когда я запускаю push-уведомление из консоли Firebase, уведомление появляется только на панели уведомлений, и баннер не скользит вверх по верхней части устройства.

Я получаю эту ошибку от устройства Android:

TypeError: Failed to register a ServiceWorker: An unknown error occurred when fetching the script

...