使用 firebase 7.14.6 和 @angular/fire 6.0.0 FCM Web 推送通知的“AngularFireMessaging”类型上不存在属性“消息”

Shi*_*hel 5 angularjs firebase firebase-cloud-messaging angularfire2

Background Web Notification我的服务中实施 FCM 时出现以下错误

error TS2339: Property 'messaging' does not exist on type 'AngularFireMessaging'

消息服务.ts

import { Injectable } from '@angular/core';
import { AngularFireMessaging } from '@angular/fire/messaging';
import { BehaviorSubject } from 'rxjs'

@Injectable()
export class MessagingService {
    currentMessage = new BehaviorSubject(null);
    constructor(private angularFireMessaging: AngularFireMessaging) {
         this.angularFireMessaging.messaging.subscribe(
             (_messaging) => {
                 _messaging.onMessage = _messaging.onMessage.bind(_messaging);
                 _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
             }
         )
    }
}
Run Code Online (Sandbox Code Playgroud)

src/firebase-messaging-sw.js

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


firebase.initializeApp({
    apiKey: "xxxxxxxxxxx",
    authDomain: "xxxxxxxxxxx",
    databaseURL: "xxxxxxxxxxx",
    projectId: "xxxxxxxxxxx",
    storageBucket: "xxxxxxxxxxx",
    messagingSenderId: "xxxxxxxxxxx",
    appId: "xxxxxxxxxxx"
});

const messaging = firebase.messaging();
Run Code Online (Sandbox Code Playgroud)

安装包

"@angular/fire": "^6.0.0",
"firebase": "^7.14.6",
"@angular/cli": "^9.1.7",
Run Code Online (Sandbox Code Playgroud)

我也尝试过降级@angular/firefirebase但没有成功。

小智 7

对于错误“属性 'onMessage' 在类型 '{}' 上不存在”,我只是将对象类型添加到_messaging,现在应用程序运行:

this.angularFireMessaging.messages.subscribe(
    (_messaging: AngularFireMessaging) => {
    _messaging.onMessage = _messaging.onMessage.bind(_messaging);
    _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
  })
}
Run Code Online (Sandbox Code Playgroud)

使用此依赖项:

"@angular/fire": "^6.0.3",
"firebase": "^7.21.0",
Run Code Online (Sandbox Code Playgroud)


Pet*_*dad 5

AngularFireMessaging不包含名为 的属性messaging,您需要使用该属性messages

         this.angularFireMessaging.messages.subscribe(
             (_messaging) => {
                 _messaging.onMessage = _messaging.onMessage.bind(_messaging);
                 _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
             }
         )
    }
Run Code Online (Sandbox Code Playgroud)

https://github.com/angular/angularfire/blob/master/docs/messaging/messaging.md#subscribing-to-foreground-messages

  • 这会产生另一个类型错误:```属性'onMessage'在类型'{}'上不存在````@angular/fire@6.0.2` | `firebase@7.21.0` (2认同)