为此,您需要在 Firebase 数据库中添加另一个名为seenBy
必须嵌套在每个下面messageId
in meassage
部分。您的数据库应如下所示:
Firebase-root
|
---- messages
|
---- messageId1
|
---- meessage: "Hello!"
|
---- timestamp: 1498472455940
|
---- seenBy
|
---- userUid1: John
|
---- userUid2: Mary
|
---- userUid3: George
每次新用户打开消息时,只需添加uid
和name
如上所述。
实施Seen by 6
选项,非常简单。你只需要创建一个listener
并使用getChildrenCount()
像这样的方法:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference seenByRef = rootRef.child("messages").child(messageId).child("seenBy");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long seenBy = dataSnapshot.getChildrenCount();
Lod.d("TAG", "Seen by: " + seenBy);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
seenByRef.addListenerForSingleValueEvent(eventListener);
要知道消息是否已打开,您需要向用户部分添加另一个字段,其中需要添加boolean
默认值为false
。这个新部分应该如下所示:
Firebase-root
|
---- users
|
---- userId1
|
---- meessages
|
---- messageId1: false
|
---- messageId2: false
|
---- messageId3: false
当用户打开该消息时,只需设置该特定消息的值false
to true
,这意味着该特定消息已被打开。这是代码:
DatabaseReference openedRef = rootRef.child("users").child(userId).child("meessages").child("messageId1");
openedRef.setValue(true);
当您创建消息时,使用push()
参考方法如下:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messageRef = rootRef.child("meessages").push();
String messageKey = messageRef.getKey();
有了这个密钥,您就可以在您的DatabaseReference
。您可以以同样的方式使用 userId。
希望能帮助到你。