9 java android firebase firebase-realtime-database firebase-cloud-messaging
我想在我的Firebase群组消息应用中实施"看到"功能.您能否建议采用最佳和最有效的方法(工作代码将受到赞赏)?例如,应用程序将在群组消息上显示" 由6看到 "或" 由15看到 ".
这是我的项目:https://github.com/firebase/friendlychat/tree/master/android
这是MainActivity:https://github.com/firebase/friendlychat/blob/master/android/app/src/main/java/com/google/firebase/codelab/friendlychat/MainActivity.java
为此,您需要在Firebase数据库中添加另一个名为的节点,该节点seenBy必须嵌套在messageIdin meassage节中。您的数据库应如下所示:
Firebase-root
|
---- messages
|
---- messageId1
|
---- meessage: "Hello!"
|
---- timestamp: 1498472455940
|
---- seenBy
|
---- userUid1: John
|
---- userUid2: Mary
|
---- userUid3: George
Run Code Online (Sandbox Code Playgroud)
每当新用户打开一条消息时,只需添加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);
Run Code Online (Sandbox Code Playgroud)
要知道是否已打开消息,您需要在用户部分添加另一个字段,在其中需要添加boolean默认值为的false。这个新部分应如下所示:
Firebase-root
|
---- users
|
---- userId1
|
---- meessages
|
---- messageId1: false
|
---- messageId2: false
|
---- messageId3: false
Run Code Online (Sandbox Code Playgroud)
当用户打开该消息时,只需将特定消息的值从设置false为true,这意味着该特定消息已被打开。这是代码:
DatabaseReference openedRef = rootRef.child("users").child(userId).child("meessages").child("messageId1");
openedRef.setValue(true);
Run Code Online (Sandbox Code Playgroud)
创建消息时,请push()在引用上使用如下方法:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messageRef = rootRef.child("meessages").push();
String messageKey = messageRef.getKey();
Run Code Online (Sandbox Code Playgroud)
有了此密钥,您可以在中使用它DatabaseReference。以相同的方式,您可以将其用于userId。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |