2016-12-01 8 views
2

私はAngular2でFirebase Cloud Messagingを使用しようとしていますが、私たちが@Googleをやりたいとは思わないようです。FCM getToken()は何も返しません

エラーを停止できるように、私はthisthisに従っています。

私は今、次の問題に直面しています: messaging.getToken()は何も返しません。 エラーはありません。コンソールにはトークンがありません。何もありません。

何か助けが歓迎されています。ありがとうございました。

編集 onTokenRefresh()を試してコードを更新しました。それは何も変わらない。私は実際に私が自分のファイヤーベースファイルに接続されていないという事実から来ているように感じます。誰でも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

'getToken()'を呼び出す前にトークンがまだ生成されていない可能性があります。そのため、onTokenRefresh()も実装する必要があります。 https://firebase.google.com/docs/cloud-messaging/js/client#monitor-token-refresh –

+0

これを指摘していただきありがとうございます。私はそれを試したが、運がなければ。私は最初のメッセージを編集しました。私は何か見落としてますか? – Tom

+0

こんにちは。その場合は分かりません。私はFCM.jsを自分自身で試してみませんでしたが、その組み合わせは何の違いもありません。私はそれを試すことができるように、問題を再現するjsbinを設定できますか? –

答えて

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、あなたの助けに感謝します。あなたはいつも私の火災の質問を助けるためにここにいる:

EDIT私はそれがすべてのブラウザで動作しないことを知りました。それはFirefoxで動作しますが、Chromeでは動作しません...どうしてですか?

+0

クローム60で働いたことがあります。実際、 'src/tsconfig.json'編集だけで十分でした。 –

関連する問題