FCM 消息问题

Chr*_*ris 6 firebase-cloud-messaging angular

我正在尝试按照此链接从 FCM 生成令牌。我在messaging.service. 我无法实现angularFireMessaging.messaging,它在消息关键字中显示错误为

'AngularFireMessaging' 类型不存在属性 'messaging'

代码

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(  //issue here in messaging
      (_messaging) => {
        _messaging.onMessage = _messaging.onMessage.bind(_messaging);
        _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
      }
    )
  }
  requestPermission() {
    this.angularFireMessaging.requestToken.subscribe(
      (token) => {
        console.log(token);
      },
      (err) => {
        console.error('Unable to get permission to notify.', err);
      }
    );
  }
  receiveMessage() {
    this.angularFireMessaging.messages.subscribe(
      (payload) => {
        console.log("new message received. ", payload);
        this.currentMessage.next(payload);
      })
  }
}
Run Code Online (Sandbox Code Playgroud)

我哪里出错了请帮帮我

Tim*_*ong 5

我认为回到旧版本不是一个理想的解决方案。我认为这个问题的作者遵循了一个教程有点过时了。

对于最新版本,

 this.angularFireMessaging.messaging.subscribe(  //issue here in messaging
  (_messaging) => {
    _messaging.onMessage = _messaging.onMessage.bind(_messaging);
    _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
  }
)
Run Code Online (Sandbox Code Playgroud)

不是必需的

删除构造函数中的所有内容,并使用以下最新版本更新您的 package.json(在撰写此答案时)

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

它会工作得很好。

如果您想了解更多详细信息,请关注此官方教程https://github.com/angular/angularfire/blob/master/docs/messaging/messaging.md


Muk*_*yuu 3

只需删除它们即可。该错误清楚地告诉您:

类型“AngularFireMessaging”上不存在属性“ messaging ”

从:

constructor(private angularFireMessaging: AngularFireMessaging) {
    this.angularFireMessaging.messaging.subscribe(  //issue here in messaging
      (_messaging) => {
        _messaging.onMessage = _messaging.onMessage.bind(_messaging);
        _messaging.onTokenRefresh = _messaging.onTokenRefresh.bind(_messaging);
      }
    )
  }
Run Code Online (Sandbox Code Playgroud)

进入:

constructor(private angularFireMessaging: AngularFireMessaging) {}
Run Code Online (Sandbox Code Playgroud)

参考:https://github.com/angular/angularfire/blob/HEAD/docs/messaging/messaging.md