firebase - 使用firebase推送通知中的onTokenRefresh与getToken有什么区别?
问题描述
我是 firebase 和 react-native 的新手,所以我很抱歉这些问题,但我想知道
使用firebase的推送通知中的onTokenRefresh与getToken有什么区别?
为什么不只与 getToken 一起使用?
为什么 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) }) })}
- 另一个问题是,如果我想获取令牌并将其发送到服务器以将其保存在数据库中,以便将来在我应该使用什么功能(获取令牌或刷新)时推送通知?以及如何确保万一令牌更改(通过更新应用程序或重新安装)它将新令牌发送到服务器?或者有什么方法可以在不让用户打开应用程序的情况下保持令牌新?
感谢您的帮助!
解决方案
- 生成新令牌时,使用最后注册的令牌触发 onTokenRefresh,但 getToken 用于注册令牌消息(如果您已注册令牌,您将从
console.log
else 语句中获取 - 当生成新令牌时,您没有得到正确的最新令牌
- onTokenRefresh 始终为您提供正确和最新的令牌
- 无论是在 getToken(如果您还没有注册令牌并获得一个)和刷新(如果它已更改)上,如果在数据库和应用程序上收到的令牌相同,则必须在服务器上进行比较。好的选择是将用户数据也保存到服务器上的 redux 存储中,如果 firebase refresh 给你不同的令牌,用这个新的令牌发出请求,如果不做任何事情,因为它是正确的。
希望它会有所帮助。
推荐阅读
- javascript - jQuery复选框功能根据最大数据获取ID
- algorithm - 如何简化将数据地址粘贴到机器代码中的立即字段的算法?
- android - 由于 META-INF,使用 Detox 和 JSI 进行测试失败
- pyspark - 过滤 RDD 文件
- haskell - 在 IO (Haskell) 中使用 mapM 函数打印键值元组列表的内容
- python - 如何使用pytest测试处理请求的Flask(非路由)函数?
- angular - 从 Angular html ionic 应用程序访问资产包中的图像文件
- python - python:使用请求模块保持HTTP连接打开
- r - R Shiny 响应式/动态分配对象名称
- loops - Pentaho 数据集成循环计数变量