当我的Android应用程序第一次使用FirebaseInstanceId.getInstance().getInstanceId()
时,注册的onNewToken
方法会被调用。但是,如何在我的活动已在运行并登录时手动触发此事件,以便模拟可能强制客户端刷新其令牌的其他安全事件?
理想情况下,这应该是应用程序之外的外部事件,例如转到某个在线 Firebase 控制台,我可以在其中清除客户端标识符或重置它们。
首先,您需要删除旧的实例 id,然后使用FirebaseInstanceId.getInstance().getInstanceId();
获取 id。
例:
public static void resetInstanceId() {
new Thread(new Runnable() {
@Override
public void run() {
try {
FirebaseInstanceId.getInstance().deleteInstanceId();
FirebaseInstanceId.getInstance().getInstanceId();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
试试这段代码。每次调用此代码时,您都会获得令牌。
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();
}
});