我正在阅读标题"检索当前注册令牌的this page上的文档。"我对它的说法感到困惑。
最初的段落非常简单。它说我们只需要打电话......
FirebaseInstanceId.getInstance().getToken
这听起来很容易,直到我读到下一段说我需要实现MyFirebaseInstanceIDService.java ......
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService
{
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
}
所以第一段似乎说我可以在任何地方进行调用,但是第二段让我在onTokenRefresh()中包含调用。
所以这就引发了onTokenRefresh被调用的问题?使用GCM,我能够选择何时拨打电话询问令牌。使用FCM,似乎我们等待onTokenRefresh在某个时间被调用。
答案 0 :(得分:0)
每当有新令牌时,都会调用onTokenRefresh()方法 生成。安装应用后,它会立即生成(如 你发现是这样的)。它也会在令牌时被调用 已经改变了。
就像在编辑时调用onEdit()
函数或在打开应用程序时调用onOpen()
一样。
答案 1 :(得分:0)
来自同一链接文件:
注册令牌可能会在以下情况下发生变化:
- 该应用删除实例ID
- 该应用已在新设备上恢复
- 用户卸载/重新安装应用
- 用户清除应用数据。
强烈建议处理onTokenRefresh()
,因为调用getToken()
(来自相同的文档)会有(罕见)的可能性:
如果尚未生成令牌,则此方法返回null。
我认为我的answer here有更多解释。
尽管如此,调用getToken()
会(大部分时间)会立即给你一个令牌,但如果它没有,onTokenRefresh()
就在那里。