Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果onNewToken未调用,如何获取firebase令牌,因为该令牌已创建?_Android_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Android 如果onNewToken未调用,如何获取firebase令牌,因为该令牌已创建?

Android 如果onNewToken未调用,如何获取firebase令牌,因为该令牌已创建?,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,正如我们所知,我们可以在继承的FirebaseMessagingService类中的onNewToken(…)上获得firebase令牌。但我有一个问题,该方法将不会调用更新应用程序案例,如果我之前已经有令牌,但我没有保存它。如何得到它 示例:在我的类中,继承自FirebaseMessagingService class CustomFirebaseService:FirebaseMessagingService(){ 重写fun-onNewToken(newToken:String){ 晚餐。

正如我们所知,我们可以在继承的
FirebaseMessagingService
类中的
onNewToken(…)
上获得
firebase令牌。但我有一个问题,该方法将不会调用更新应用程序案例,如果我之前已经有令牌,但我没有保存它。如何得到它

示例:在我的类中,继承自
FirebaseMessagingService

class CustomFirebaseService:FirebaseMessagingService(){
重写fun-onNewToken(newToken:String){
晚餐。纽顿(纽顿)
//我在这里有一个令牌,但我已经没有把它保存在任何地方(sharedperf,db,…)
}
现在在我的应用程序中,我需要使用它,但我不确定获得它的最佳方式是什么

类应用程序:应用程序(){ 重写fun onCreate(){ super.onCreate() //我需要在这里使用令牌,但不会调用onNewToken方法,因为当前令牌有效。 } }

也许,我可以使用
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(..)
?是否与我的自定义服务重复???

如上的Firebase文档所述:

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();
}
});
通常,您只需要在开发中使用它,因为初始令牌通常是在您拥有
onNewToken
之前生成的。一旦您的应用程序投入生产,将从生成第一个令牌的那一刻起调用
onNewToken
代码

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();
        }
    });