正如我们所知,我们可以在继承FirebaseMessagingService
的类中onNewToken(...)
获得firebase token
。但是我有一个问题,该方法不会调用更新应用程序案例,如果我之前已经有令牌,但我没有保存它。如何获得它??
示例:在我的类中继承自FirebaseMessagingService
class CustomFirebaseService : FirebaseMessagingService() {
override fun onNewToken(newToken: String) {
supper.onNewToken(newToken)
// I have token in here, but I already didn't save it on any where (sharedperf, db,..)
}
现在在我的应用程序中,我需要使用它,但我不确定获得它的最佳方法是什么?
class App: Application() {
override fun onCreate() {
super.onCreate()
// I need to use token here, but method onNewToken will not called, because the current token is valid.
}
}
也许,我可以使用FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(..)
吗?它是否与我的自定义服务重复??
正如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(); } });
您通常只需要在开发中执行此操作,因为初始令牌通常是在您拥有onNewToken
之前生成的。应用投入生产后,将从生成第一个令牌的那一刻起调用onNewToken
代码。