Android 如何手动触发Firebase onNewToken呼叫?

Android 如何手动触发Firebase onNewToken呼叫?,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,当我的Android应用程序第一次使用FirebaseInstanceId.getInstance().getInstanceId()时,会调用注册的onNewToken方法。但是,当我的活动已经运行并登录时,如何手动触发此事件,以便模拟可能已强制客户端刷新其令牌的其他安全事件 理想情况下,这应该是应用程序外部的一个外部事件,比如转到某个在线Firebase控制台,在那里我可以清除或重置客户端标识符。试试这段代码。每次调用此代码时,都会得到令牌 FirebaseInstanceId.getIns

当我的Android应用程序第一次使用
FirebaseInstanceId.getInstance().getInstanceId()
时,会调用注册的
onNewToken
方法。但是,当我的活动已经运行并登录时,如何手动触发此事件,以便模拟可能已强制客户端刷新其令牌的其他安全事件


理想情况下,这应该是应用程序外部的一个外部事件,比如转到某个在线Firebase控制台,在那里我可以清除或重置客户端标识符。

试试这段代码。每次调用此代码时,都会得到令牌

FirebaseInstanceId.getInstance().getInstanceId()
    .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
        @Override
        public void onComplete(@NonNull Task<InstanceIdResult> task) {
            if (!task.isSuccessful()) {
                Log.w(TAG, "getInstanceId failed", task.getException());
                return;
            }

            // Get new Instance ID token
            String token = task.getResult().getToken();

            // Log and toast
            String msg = getString(R.string.msg_token_fmt, token);
            Log.d(TAG, msg);
            Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
w(标记“getInstanceId失败”,task.getException());
返回;
}
//获取新实例ID令牌
字符串标记=task.getResult().getToken();
//原木和烤面包
String msg=getString(R.String.msg\u token\u fmt,token);
Log.d(标签、消息);
Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
}
});

首先需要删除旧的实例id,然后使用
FirebaseInstanceId.getInstance().getInstanceId()获取id

例如:

公共静态void resetInstanceId(){
新线程(newrunnable()){
@凌驾
公开募捐{
试一试{
FirebaseInstanceId.getInstance().deleteInstanceId();
FirebaseInstanceId.getInstance().getInstanceId();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}).start();
}

我想重点是,如何强制调用方法onNewToken。如果应用程序升级,我们将fcm放在新版本上,问题就会出现。