实施火力地堡群消息应用程序读回执功能

user7889746:

我想在我的火力地堡群消息应用程序以实现一个“看”的功能。你可以请告知把最好的和最有效的方法(工作的代码可以理解的)?例如,应用程序将显示“ 由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

亚历克斯·马莫:

要做到这一点,你需要添加另一个节点命名你的火力地堡的数据库seenBy必须根据每一个嵌套messageIdmeassage部分。你的数据库应该是这样的:

Firebase-root
   |
   ---- messages
           |
           ---- messageId1
                   |
                   ---- meessage: "Hello!"
                   |
                   ---- timestamp: 1498472455940
                   |
                   ---- seenBy
                          |
                          ---- userUid1: John
                          |
                          ---- userUid2: Mary
                          |
                          ---- userUid3: George

一个新的用户打开一个meesage每一次,只是添加uidname上面相同。

为了实现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

当用户打开该邮件,只需设置特定的消息从价值falsetrue,这意味着特定的消息已被打开。这是代码:

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以同样的方式,你可以使用的用户ID。

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

请告诉我错在应用程序本身实施火力地堡安全规则?

安卓应用程序访问计数使用火力地堡数据库问题

安卓应用程序访问计数使用火力地堡数据库

FirebaseListAdapter不是推动各个项目的聊天应用程序 - 火力地堡的UI 3.1

在发出加火力地堡应用程式消息

火力地堡云功能错误代码和错误消息始终内置在Android

从网络火力地堡云HTTP消息

火力地堡 https onCall 功能被 cors 阻止

如何从火力地堡处理onNotificationReceived每10分钟一班,而应用程序是在后台。安卓9.0

是有可能使推送通知到已经安装了我的应用程序,而不火力地堡云端通讯(FCM)的所有设备?

如何根据用户帐户制作应用程序功能?(离子 2 和火力基地)

从Java,而不是火力地堡火力地堡控制台云消息通知

具有多个关系的聊天应用程序中未读消息的SQL

Exceljs 应用程序“正在处理您的功能”消息

正确实施Azure功能应用程序的后台工作程序

安卓不能延长火力地堡消息服务

如何使用Foreground应用程序实施Firebase Cloud消息传递?

应用程序不会在recyclerview火力显示数据

从火力Realtimedatabase删除用户时,Android应用程序崩溃

实施iOS应用程序之类的功能,以使用ViewPager关闭垂直滑动到关闭

数据模型火力地堡/公司的FireStore聊天应用

清单合并失败:属性应用@ appComponentFactory更新火力地堡库

Mac App Store测试收据验证(来自回执)“应用程序已损坏,无法打开。”

我可以使用Google表单应用程序脚本将“回执”设置为“始终”吗?

实施单实例Java应用程序

实施类似行为的应用程序图标

实施浮动应用程序...从哪里开始

火力地堡FCM阵营项目问题 - 火力点的消息,sw.js错误的类型?

消息队列应用程序