聊天应用程序问题

时间:2020-11-10 14:26:15

标签: firebase kotlin chat

因此,我构建了一个聊天应用程序。在名为“ MessageChatActivity”的活动中,用户可以发送和接收消息。发送邮件后,有一个“已发送”标签,阅读邮件后,它变为“已看到”。

但是我遇到了这个问题-如果用户A向用户B发送一条消息,并且用户B进入了聊天活动,则标签将更改为“已看到”。但是,此后,即使用户B不在聊天中,用户A发送给B的每条消息也会自动获得“ seen”标签。只要用户B处于联机状态,该消息就会更改为“已看到”。仅当用户B完全存在于应用程序中时,新消息才被标记为“已发送”。

我不知道问题出在哪里。这是相关的代码:

MessageChatActivity:

e.output

这是ChatsAdapter中的相关代码:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_message_chat)

//Here there is code to retrieve and send conversations, at the end calling the seenMessage function.

seenMessage(userIdVisit)

var seenListener: ValueEventListener? = null
seenMessage(userIdVisit)
{

    private fun seenMessage(userId: String)
    {
        val reference = FirebaseDatabase.getInstance().reference.child("Chats")
        seenListener = reference!!.addValueEventListener(object: ValueEventListener{

            override fun onDataChange(p0: DataSnapshot)
            {
                for (dataSnapshot in p0.children)
                {
                    val chat = dataSnapshot.getValue(Chat::class.java)
                    if (chat!!.getReceiver().equals(firebaseUser!!.uid) && chat!!.getSender().equals(userId))
                    {
                        val hashMap = HashMap<String, Any>()
                        hashMap["isseen"] = true
                        dataSnapshot.ref.updateChildren(hashMap)
                    }
                }
            }

            override fun onCancelled(p0: DatabaseError)
            {

            }
        })
    }

0 个答案:

没有答案