FirebaseInstanceId.getInstance().getToken() 弃用了如何在数据库中保存令牌
FirebaseInstanceId.getInstance().getToken() deprecated how to save token in DB
我不知道如何将新的 FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener 实现到我自己的代码中,这样我就可以检索令牌并将其保存到数据库中以使用 FCM 并识别每个用户。
实际上我有以下代码:
if (task.isSuccessful()) {
final String deviceToken = FirebaseInstanceId.getInstance().getToken();
Map<String, Object> createUser = new HashMap<>();
createUser.put("name", name);
createUser.put("email", email);
createUser.put("device_token", deviceToken);
Ref.child("Users").child(task.getResult().getUser().getUid()).updateChildren(createUser);
根据实际的firebase说明,我应该修改如下:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(MainActivity.this, new OnSuccessListener<InstanceIdResult>(){
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
Log.e("newToken", deviceToken);
}
});
Map<String, Object> createUser = new HashMap<>();
createUser.put("name", name);
createUser.put("email", email);
createUser.put("device_token", deviceToken);
Ref.child("Users").child(task.getResult().getUser().getUid()).updateChildren(createUser);
但我不知道如何从该方法中获取 deviceToken 字符串,我应该将它保存到共享首选项然后从那里检索它吗?
因为如果我想将 "deviceToken" 声明为全局,则不允许,因为它需要声明为最终的。
谢谢!
您应该在 getInstanceId()
调用的 onSuccess
回调中保存令牌:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(MainActivity.this, new OnSuccessListener<InstanceIdResult>(){
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
Log.e("newToken", deviceToken);
... save the token to your database here
}
});
已弃用,
在 gradle 更新实施 'com.google.firebase:firebase-messaging:21.0.0'
使用以下代码:
FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (!task.isSuccessful()) {
return;
}
// Get new FCM registration token
String token= task.getResult();
}
});
我不知道如何将新的 FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener 实现到我自己的代码中,这样我就可以检索令牌并将其保存到数据库中以使用 FCM 并识别每个用户。
实际上我有以下代码:
if (task.isSuccessful()) {
final String deviceToken = FirebaseInstanceId.getInstance().getToken();
Map<String, Object> createUser = new HashMap<>();
createUser.put("name", name);
createUser.put("email", email);
createUser.put("device_token", deviceToken);
Ref.child("Users").child(task.getResult().getUser().getUid()).updateChildren(createUser);
根据实际的firebase说明,我应该修改如下:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(MainActivity.this, new OnSuccessListener<InstanceIdResult>(){
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
Log.e("newToken", deviceToken);
}
});
Map<String, Object> createUser = new HashMap<>();
createUser.put("name", name);
createUser.put("email", email);
createUser.put("device_token", deviceToken);
Ref.child("Users").child(task.getResult().getUser().getUid()).updateChildren(createUser);
但我不知道如何从该方法中获取 deviceToken 字符串,我应该将它保存到共享首选项然后从那里检索它吗?
因为如果我想将 "deviceToken" 声明为全局,则不允许,因为它需要声明为最终的。
谢谢!
您应该在 getInstanceId()
调用的 onSuccess
回调中保存令牌:
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(MainActivity.this, new OnSuccessListener<InstanceIdResult>(){
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String deviceToken = instanceIdResult.getToken();
Log.e("newToken", deviceToken);
... save the token to your database here
}
});
已弃用, 在 gradle 更新实施 'com.google.firebase:firebase-messaging:21.0.0' 使用以下代码:
FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (!task.isSuccessful()) {
return;
}
// Get new FCM registration token
String token= task.getResult();
}
});