【发布时间】:2016-12-01 14:00:27
【问题描述】:
我正在尝试将 Firebase Cloud Messaging 与 Angular2 一起使用,但他们似乎不希望我们这样做@Google。
我现在面临以下问题:
为什么messaging.getToken() 什么都不返回?
没有错误,控制台中没有令牌,什么都没有。
我们非常欢迎任何帮助。谢谢。
编辑
我尝试使用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);
});
}
}
【问题讨论】:
-
在您调用
getToken()时,令牌可能尚未生成。这就是为什么你还必须实现onTokenRefresh()。见firebase.google.com/docs/cloud-messaging/js/… -
感谢您指出这一点。我试过了,但没有更多的运气。我已经编辑了我的第一条消息。我错过了什么吗?
-
嗯....在那种情况下我不知道。我自己没有尝试过使用 angular 的 FCM.js,但是这种组合应该没有任何区别。能否设置一个jsbin为你重现问题,让我试试?
-
实际上它在 Firefox 中有效,但在 chrome 中无效。我在 Firefox 中获得了一个令牌。怎么会?
标签: angular firebase firebase-cloud-messaging angularfire2