FCM getToken() 没有 return 任何东西

FCM getToken() doesn't return anything

我正在尝试将 Firebase Cloud Messaging 与 Angular2 结合使用,但好像他们不希望我们这样做@Google.

我一直在关注 this and 以阻止错误。

我现在面临以下问题: 为什么 messaging.getToken() returns 什么都没有? 没有错误,控制台中没有令牌,什么都没有。

我们非常欢迎任何帮助。谢谢。

编辑 我已经尝试使用 onTokenRefresh() 更新了下面的代码。它不会改变任何东西。我觉得这是因为我并没有真正插入我的 firebase 文件。有人能够使用 Angular2 和 AngularFire2 制作 FCM 吗?

import {Component, OnInit, Inject} from '@angular/core';
import { FirebaseApp } from "angularfire2";
import * as firebase from 'firebase';

@Component({
  templateUrl: './+config.component.html',
  styleUrls: ['./+config.component.scss']
})
export class UserConfigComponent implements OnInit {

  private _messaging: firebase.messaging.Messaging;

  constructor(@Inject(FirebaseApp) private _firebaseApp: firebase.app.App) {
    this._messaging = firebase.messaging();
  }

  ngOnInit() {
    // Callback fired if Instance ID token is updated.
    this._messaging.onTokenRefresh(function() {
      this._messaging.getToken()
        .then(function(refreshedToken) {
          console.log('Token refreshed.', refreshedToken);
        })
        .catch(function(err) {
          console.log('Unable to retrieve refreshed token ', err);
        });
    });
  }

  requestPushNotif() {
    this._messaging.requestPermission()
      .then(() => {
        console.log('have permission');
        return this._messaging.getToken();
      })
      .then(function(token) {
        console.log(token);
      })
      .catch((error) => {
        console.log(error);
      });
  }

}

好的,我找到了解决方案。问题来自 Angular-CLI 和 AngularFire2.

之间的关系

here

我必须在 src/tsconfig.jsonsrc/typings.d.ts 中添加以下内容:

"types": [
  "firebase"
]

declare var require: any;
declare var module: any;

希望对大家有所帮助。

谢谢弗兰克·范普菲伦的帮助。你总是在这里帮助解决我的 firebase 问题:)

EDIT 我刚刚发现它不适用于所有浏览器。它在 firefox 中有效,但在 chrome 中无效...怎么会?