在带有Firebase的推送通知中,onTokenRefresh和getToken有何区别?

时间:2018-09-06 15:21:26

标签: firebase react-native firebase-cloud-messaging

我是Firebase的新手,本机是react-native,因此对这个问题感到抱歉,但我想知道

  1. 在带有Firebase的推送通知中,onTokenRefresh和getToken有什么区别?

  2. 为什么不只与getToken一起使用?

  3. 为什么在此代码中始终会出现onTokenRefresh,我认为只有在令牌实际更改后,它才会运行此功能...

    componentDidMount() {
    
    kittensApp.onReady().then(app => {
     app.messaging().getToken()
    .then(fcmToken => {
    if (fcmToken) {
        console.log('fcmtokenApp', fcmToken)
    } else {
      console.log('here 2')
     } 
      })
    
    app.messaging().onTokenRefresh(token => {
    console.log('refreshtoken', token)
      })
         })}
    
  4. 另一个问题是,如果我想获取令牌并将其发送到服务器以将其保存在数据库中,以便将来在我应该使用哪种功能(获取令牌或刷新)时推送通知?以及如何确定令牌更改(通过更新应用或重新安装)以将新令牌发送到服务器?还是有什么方法可以使令牌保持新状态而无需让用户打开应用程序?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

    生成新令牌时,会使用最后注册的令牌触发
  1. onTokenRefresh,但getToken用于注册令牌消息传递(如果您已注册令牌,则将从else语句中获取console.log
  2. 当生成新令牌时,您不会获得正确的最新令牌
  3. onTokenRefresh为您提供始终正确和最新的令牌
  4. 在getToken(如果尚未注册令牌并获得一个)和刷新(如果已更改)上,如果数据库和应用程序上收到的令牌相同,则必须在服务器上进行比较。不错的选择是将用户数据也保存到服务器上的Redux存储中,如果Firebase刷新为您提供了不同的令牌,请使用此新请求进行请求,如果不做则因为正确是不做任何事情。

希望这会有所帮助。