При попытке использовать AngularFire Cloud Messaging Angular модуль выбрасывает пропущенные значения конфигурации приложения - PullRequest
0 голосов
/ 11 октября 2019

Я устанавливаю Firebase Cloud Messaging в своем приложении Angular, используя AngularFire2, для получения и отправки уведомлений. Однако при попытке получить текущий токен пользователя приложение возвращает ошибку.

Я уже создал файлы «firebase-messaging-sw.js» и «manifest.json» для регистрации работника службы и добавилвсе правильно, но безуспешно.

Компонент, на который я подписываюсь на наблюдаемое.

export class HomeComponent implements OnInit {
  constructor(
    private afMessaging: AngularFireMessaging,
    private afStore: AngularFirestore,
    private afAuth: AngularFireAuth,
  ) {}

  ngOnInit() {
    this.afAuth.user.pipe(
      exhaustMap(
        user => {
          return this.afMessaging.getToken.pipe(
            tap(
              token => {
                console.log(token);
                this.afStore.collection('users').doc(user.uid).update({
                  fcmToken: token
                });
              }
            )
          );
        }
      )
    ).subscribe();
    this.afMessaging.messages
      .subscribe((message) => { console.log(message); });
  }
}

Работник службы:

  // Give the service worker access to Firebase Messaging.
  // Note that you can only use Firebase Messaging here, other Firebase libraries
// are not available in the service worker.
importScripts("https://www.gstatic.com/firebasejs/6.3.4/firebase-app.js");
importScripts("https://www.gstatic.com/firebasejs/6.3.4/firebase-messaging.js");

// Initialize the Firebase app in the service worker by passing in the
// messagingSenderId.
firebase.initializeApp({
  messagingSenderId: "231973795174"
});

// Retrieve an instance of Firebase Messaging so that it can handle background
// messages.
const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler(function(payload) {
  console.log(
    "[firebase-messaging-sw.js] Received background message ",
    payload
  );
  // Customize notification here
  const notificationTitle = "Background Message Title";
  const notificationOptions = {
    body: "Background Message body.",
    icon: "/firebase-logo.png"
  };

  return self.registration.showNotification(
    notificationTitle,
    notificationOptions
  );
});

Манифест

{
  "name": "App",
  "gcm_sender_id": "103953800507"
}

Angular.json

"assets": [
    "src/favicon.ico",
    "src/assets",
    "src/firebase-messaging-sw.js",
    "src/manifest.json"
 ],

Ниже подробно описана ошибка, которую я получаю:

Uncaught (в обещании): FirebaseError: Установки: отсутствует приложениеЗначения конфигурации. (установки / недостающее приложение-конфигурация-значение). FirebaseError: Установки: отсутствуют значения конфигурации приложения. (установки / недостающее приложение-конфигурация-значение). в extractAppConfig (index.esm.js: 89) в Object.factoryMethod [в качестве установок] (index.esm.js: 1110) в FirebaseAppImpl.push ../ node_modules/@firebase/app/dist/index.cjs.js. FirebaseAppImpl._getService (index.cjs.js: 191) в FirebaseAppImpl.firebaseAppImpl. [как установки] (index.cjs.js: 458) в index.esm.js: 415 на шаге (tslib.es6.js: 99) в Object.next (tslib.es6.js: 80) в tslib.es6. js: 73 в новом ZoneAwarePromise (zone-evergreen.js: 876) в __awaiter (tslib.es6.js: 69) в resolPromise (zone-evergreen.js: 797) в zone-evergreen.js: 707 в zone-evergreen. js: 723 в ZoneDelegate.invoke (zone-evergreen.js: 359) в Object.onInvoke (core.js: 39698) в ZoneDelegate.invoke (zone-evergreen.js: 358) в Zone.run (zone-evergreen.js): 124) в zone-evergreen.js: 855 в ZoneDelegate.invokeTask (zone-evergreen.js: 391) в Object.onInvokeTask (core.js: 39679)

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