我正在尝试将令牌值存储为Firebase数据库的键。像这样:
"Token" : {
"-KoWsMn9rCIitQeNvixr" : {
"dK1FjGbNr6k:APA91b...S8JK2d69JpO" : "true"
},
...
}
我正在使用Firebasebaseinstanceid来生成令牌。但是令牌根本不存储在数据库中。
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String REG_TOKEN="REG_TOKEN";
private DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference().child("Token");
@Override
public void onTokenRefresh() {
String recent_token = FirebaseInstanceId.getInstance().getToken();
Log.d(REG_TOKEN, recent_token);
final DatabaseReference newPost = databaseReference.push();
newPost.child(recent_token).setValue("true");
}
}
我是火力基地的新手。任何帮助不胜感激!
我是这样做的:
String userToken = FirebaseInstanceId.getInstance().getToken();
mTokenRef = mRef.child("user_tokens").child(currentUser.getUid()).child(userToken);
mTokenRef.setValue(true, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference reference) {
if (databaseError != null) {
Log.e(TAG, "Failed to write message", databaseError.toException());
Toast.makeText(context, "Error :( Your profile was not updated",Toast.LENGTH_LONG).show();
}
如果每次用户打开应用时在 MainActivity 中添加此代码,则会向数据库添加新令牌。当您通过 Firebase 函数发送通知时,您可以移除不再有效的令牌。通过这样做,您将能够向所有用户的设备发送通知,而不会浪费时间尝试向错误的令牌发送通知。