我可以问一个问题,我可以在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();
}
});
}
答案 0 :(得分:1)
根据文档,不建议使用getToken()方法,这意味着它将在以后的版本中删除。 文档说您应该使用另一种方法来接收令牌-getInstanceId();
有关更多信息,请访问以下链接: https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId.html#getToken()
答案 1 :(得分:1)
不推荐使用FirebaseInstanceId getToken()
方法。
来自docs:
不推荐使用此方法。支持getInstanceId()。
由于此更改,您需要注意以下几点:
FirebaseInstanceIdService
来接收令牌。而是使用FirebaseMessagingService
onNewToken()
中覆盖FirebaseMessagingService
下面的代码应解决您的问题:
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参考的代码。