** 已编辑 **
我需要有关Firebase的帮助。我需要做的是:
当前代码:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference tokens = db.getReference(Common.token_table);
Token token = new Token(FirebaseInstanceId.getInstance().getToken());
//if user is already logged in, will update token
tokens.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(token);
我需要这样:
答案 0 :(得分:2)
要解决此问题,您需要获取经过身份验证的用户uid
,如下所示:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
拥有此uid
,您可以在活动所需的每个地方使用它。因此,要根据您的数据库结构添加tokenId
,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String tokenId = FirebaseInstanceId.getInstance().getToken();
rootRef.child("Tokens").child("Carpenters").child(tokenId).setValue(true);
您的数据库结构如下所示:
Firebase-root
|
--- Tokens
|
--- Carpenters
|
--- "uid1": true
根据您的编辑,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
String tokenId = FirebaseInstanceId.getInstance().getToken();
rootRef.child("Tokens").child("Plumbers").child(uid).child("token").setValue(tokenId);
最终答案:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
String tokenId = FirebaseInstanceId.getInstance().getToken();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference workersRef = rootRef.child("Workers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
if (ds.child(uid).exists()) {
rootRef.child("Tokens").child(ds.getKey()).child(uid).child("token").setValue(tokenId);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
workersRef.addListenerForSingleValueEvent(valueEventListener);