我正在尝试将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);
});
}
}
答案 0 :(得分:3)
好的,我找到了解决方案。问题来自Angular-CLI和AngularFire2之间的关系。
这是here。
我必须在src/tsconfig.json
和src/typings.d.ts
中添加以下内容:
"types": [
"firebase"
]
和
declare var require: any;
declare var module: any;
我希望这可以帮助别人。
谢谢Frank van Puffelen的帮助。你总是在这里帮我解决我的firebase问题:)
编辑我刚发现它无法在所有浏览器中使用。它适用于Firefox,但不适用于Chrome ...为什么会这样?