使用firebase ionic3推送通知

时间:2018-04-07 22:45:18

标签: typescript firebase ionic-framework firebase-realtime-database

我使用[cordova-plugin-firebase]进行推送通知,我使用firebase实时数据库。我不知道为什么我会在下面收到以下错误。

错误:«this.firebase.getToken()不是函数»

代码:

   import { Injectable } from '@angular/core';
   import { AngularFireDatabase } from 'angularfire2/database';

   @Injectable()
   export class FirebaseProvider {

   constructor(public afd: AngularFireDatabase) { }


   getUserInfo(uid){
   return this.afd.object('/users/'+ uid).valueChanges();
   }
   }

**代码FirebaseProvider **

client = Clinet.find(some_id)
site = client.sites.new(params)
site.save

任何想法为什么?

2 个答案:

答案 0 :(得分:0)

ContactPage类中的

this.firebase是对您自己的FirebaseProvider(-Class)的引用,而不是对cordova FirebaseAddon的引用。在您的类中没有名为.getToken()的方法,因此抛出错误。

答案 1 :(得分:-1)

根据:Firebase Documentation | getToken

不推荐使用此属性。请改用firebase.User#getIdToken。

this.firebase.auth().currentUser.getIdToken().then((token)=>{
   console.log(`The token is ${token}`)
}).catch(function(error) {
   // Handle error
});

您可以使用 onAuthStateChanged 来验证用户是否在获取令牌之前已登录。

this.firebase.auth().onAuthStateChanged((user)=>{
  if (user) {
    user.getIdToken().then((token)=>{
     console.log(`The token is ${token}`)
    });
  }
});