【问题标题】:Retrieve group/muc chat history using smack in android在 android 中使用 smack 检索组/muc 聊天记录
【发布时间】:2020-12-10 18:33:36
【问题描述】:

我正在使用 Smack 4.3.4 安卓库。我在使用以下代码获取特定组的聊天记录时遇到问题。但是它返回 0 但是,我可以使用另一个客户端 Web 看到很多消息。

private fun initGroupChatRoom(){
       val mucEnterConfiguration = multiUserChat?.getEnterConfigurationBuilder(nickname)!!
           .requestNoHistory()
           .build()

       try {
           if (!multiUserChat!!.isJoined) {
               multiUserChat?.join(mucEnterConfiguration)
           }
       }catch (e: Exception){
           Log.e("GrpChatAct","Join Error: "+e.toString())
       }

       multiUserChat?.addMessageListener(incomingMessageListener)
   }

private fun chatHistory(){
       CoroutineScope(Dispatchers.IO).launch {
           var mamManager = MamManager.getInstanceFor(multiUserChat)

           var result =  async {
               mamManager.enableMamForAllMessages()
               mamManager.queryMostRecentPage(jId, 70)
           }.await()
        Log.e("GrpChatAct","Total Messages: "+result.messageCount)
     }
}

我还尝试在 MamManager 中进行以下更改:

var mamManager = MamManager.getInstanceFor(mConnection)

mConnectionsmack 连接 对象。

但是,我仍然在结果中收到 0 条消息。

我遵循了来自this 参考的代码。

代码中有什么我遗漏的地方或我犯的错误吗?

【问题讨论】:

  • 您确定正在维护 MAM 存档吗?在 Openfire 上,您需要为此安装监控插件。此外,监控插件必须配置为存储消息(默认情况下不这样做)。
  • 我也试过了,但没有收到过去的消息。一对一聊天效果很好
  • @MihirPatel 我用最新版本解决了。

标签: android xmpp openfire smack multiuserchat


【解决方案1】:

使用以下代码获取特定群组的聊天记录

val multiUserChatManager = MultiUserChatManager.getInstanceFor(XmppChatConnection.instance?.connection)

 val multiUserChat = multiUserChatManager?.getMultiUserChat(mucJid)
                    val mamManager = MamManager.getInstanceFor(multiUserChat)
                    val mamQueryArgs = MamManager.MamQueryArgs.builder()
                            .limitResultsSince(endDate)
                            .setResultPageSize(1000000000)
                            .queryLastPage()
                            .build()
                    val mamQuery = mamManager.queryArchive(mamQueryArgs)
                    val messageList = mamQuery.messages

【讨论】:

    猜你喜欢
    • 2016-07-07
    • 2018-04-27
    • 2015-02-13
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2014-06-06
    • 2020-12-04
    • 2014-03-06
    相关资源
    最近更新 更多