不推荐使用FirebaseInstanceId.getInstance()。getToken()

时间:2019-04-09 09:47:47

标签: java firebase firebase-cloud-messaging

我可以问一个问题,我可以在FirebaseInstanceId中使用“ if”吗?我尝试注册一个帐户页面,但没有任何反应或显示任何内容,并且出现错误消息:

import android.support.annotation.NonNull;

mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>(){
@Override
public void onComplete(@NonNull Task<AuthResult> task){

        if(task.isSuccessful()){
           // these lines for taking DEVICE TOKEN for sending device to device notification
           String userUID=mAuth.getCurrentUser().getUid();
           String userDeiceToken=FirebaseInstanceId.getInstance().getToken();
           userDatabaseReference.child(userUID).child("device_token").setValue(userDeiceToken)
        .             addOnSuccessListener(new OnSuccessListener<Void>(){
                @Override
                public void onSuccess(Void aVoid){
                    checkVerifiedEmail();
                }
            });
        }

2 个答案:

答案 0 :(得分:1)

根据文档,不建议使用getToken()方法,这意味着它将在以后的版本中删除。 文档说您应该使用另一种方法来接收令牌-getInstanceId();

有关更多信息,请访问以下链接: https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId.html#getToken()

答案 1 :(得分:1)

不推荐使用FirebaseInstanceId getToken()方法。

来自docs

  

不推荐使用此方法。支持getInstanceId()。

由于此更改,您需要注意以下几点:

  1. 您不需要使用FirebaseInstanceIdService来接收令牌。而是使用FirebaseMessagingService
  2. onNewToken()中覆盖FirebaseMessagingService
  3. 更新令牌的访问方式

下面的代码应解决您的问题:

public class MyFirebaseMessagingService extends FirebaseMessagingService {    
    @Override
    public void onNewToken(String token) {
        super.onNewToken(token);
        Log.e("TOKEN", token);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d(TAG, "From: " + remoteMessage.getFrom());
    }
}

如果您需要检索令牌,则可以使用以下方法:

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, 
new OnSuccessListener<InstanceIdResult>() {
    @Override
    public void onSuccess(InstanceIdResult instanceIdResult) {
        String newToken = instanceIdResult.getToken();
        Log.e("newToken", newToken);
    }
});

我从this article参考的代码。