Angular 7 не может получать уведомления о базе данных на переднем плане - PullRequest
0 голосов
/ 08 октября 2019

Я настраиваю свой веб-сайт для получения уведомлений Firebase. Я могу получить его, когда в фоновом режиме. Но не мог, когда на переднем плане. Я перешел по этой ссылке учебника, чтобы настроить. https://medium.com/@a.adendrata/push-notifications-with-angular-6-firebase-cloud-massaging-dbfb5fbc0eeb.

Я инициализировал его в app.module.ts.

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

Я пытался использовать AngularFireMessaging и FirebaseApp. Но они оба не смогли получить уведомление после отправки.

import { FirebaseApp } from '@angular/fire';
import '@firebase/messaging';
import { AngularFireMessaging } from '@angular/fire/messaging';

  setUpMessage() {
    this.messaging = this.firebaseApp.messaging();
  }

  setUpFCM() {
    this.afMessaging.messaging.subscribe(_messaging => {
      _messaging.onMessage = _messaging.onMessage.bind(_messaging);
      _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
    });
  }

  requestPermission() {
    this.afMessaging.requestToken.subscribe(token => {
      console.log(token);
    }, error => {
      console.error(error);
    });
  }

  listenToNotifications() {
    return this.afMessaging.messages;
  }

  listenNotifications() {
    return this.messaging;
  }

В моем файле component.ts я инициализировал их и получил токен из firebase. но я не могу получить уведомление на переднем плане.

ngOnInit() {
    this.fcmTokenService.setUpMessage();
    this.fcmTokenService.setUpFCM();
    this.fcmTokenService.requestPermission();
    this.validation_messages = this.printFormService.printValidationMessage();
    this.listenNotification();
    this.listenNotification2();
  }

  private listenNotification() {
    this.fcmTokenService.listenToNotifications().subscribe(msg => {
      // msg.content = JSON.parse(msg.data.content);
      console.log(msg);
    });
  }

  private listenNotification2() {
    this.fcmTokenService.listenNotifications().onMessage(msg => {
      console.log(msg);
    });
  }

Я ожидаю получить уведомление и консоль записать его в журнал, но без результата через много часов или повторных попыток с другими подходами.

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Я обнаружил, что версия importScripts в службе Worker и версия библиотеки в package.json должны совпадать.

0 голосов
/ 15 ноября 2019

Версия сценариев импорта и версия библиотеки в node_modules должны совпадать для подписки обмена сообщениями переднего плана для получения данных!

0 голосов
/ 12 октября 2019

Это проблема совместимости версий, насколько я понял. просто попробуйте использовать "firebase": "^ 5.0.0", "@ angular / fire": "^ 5.0.0" ,

переопределить ваш package.json с этими двумя,запустите npm install, все будет в порядке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...