未使用的消息计数在活动通道中返回 null

Abd*_*hab 6 android twilio twilio-api twilio-programmable-chat

嗨,我正在通过在 android 中使用 Twilio 编程聊天在聊天基础应用程序中工作,但面临一个奇怪的问题。我有底部导航,我显示聊天的总未读计数和聊天列表,用户可以在其中看到每个聊天的个人未读计数。当用户单击个人时未读聊天然后未读计数重置为零,这完美地工作,但是当我返回聊天列表并突然收到新消息时,聊天列表屏幕更新为新消息,但未读计数为零。底部导航的总通知计数是工作正常。几秒钟后,当新消息再次收到时,它的个人计数被接收并完美地工作

问题是当用户返回聊天列表并在两三秒内收到新消息时,未读计数在 10 秒或更长时间后返回 null 或零,个人聊天的未读计数工作完美。以下是个人阅读计数的代码示例

// indivisual read count get on channel
subscribedChannel.getUnconsumedMessagesCount(object : CallbackListener<Long>() {
                                                override fun onSuccess(count: Long?) {}})
Run Code Online (Sandbox Code Playgroud)

底部导航总阅读次数的代码

            chatClient!!.channels.getUserChannelsList(object : CallbackListener<Paginator<ChannelDescriptor>>() {
                internal var countCustomer: Long = 0
                internal var countProvider: Long = 0


                override fun onSuccess(channelDescriptorPaginator: Paginator<ChannelDescriptor>) {

                    for (descriptor in channelDescriptorPaginator.items) {

                        // if (appPreferences.getBoolean(Common.IS_LOGIN))
                        val splitData=descriptor.uniqueName.split("_")
                       // Log.e(TAG,"unique name is "+descriptor.uniqueName)
                        if (splitData.size==1)
                        {
                            if (splitData[0] == session.userId)
                            {
                                Log.e(TAG,"unique name is size one"+descriptor.uniqueName)
                                countCustomer += descriptor.unconsumedMessagesCount
                            }
                        }
                        if (splitData.size==2)
                        {
                            if (splitData[0] == session.userId || splitData[1] == session.userId)
                            {
                                countCustomer += descriptor.unconsumedMessagesCount

                                if (descriptor.unconsumedMessagesCount>0)
                                {
                                    Log.e(TAG,"unique name is size two "+descriptor.uniqueName)
                                }

                            }
                        }

                        //if (appPreferences.getBoolean(Common.IS_LOGIN_PROVIDER))
                        /* if (descriptor.uniqueName.split("_")[1].equals(session.userId))
                             countProvider += descriptor.unconsumedMessagesCount*/
                    }

                    if (channelDescriptorPaginator.hasNextPage())
                        channelDescriptorPaginator.requestNextPage(this)
                    else {
                        val twilioCountData = TwilioCountData(countCustomer, countProvider)
                        e.onSuccess(twilioCountData)
                    }

                }
            })
Run Code Online (Sandbox Code Playgroud)

我还在下面的链接https://gofile.io/d/yF8qNP 中附上了用例视频。任何帮助将不胜感激