我正在使用 Smack 4.3.4 android库。我在使用以下代码获取特定群组的聊天记录时遇到问题。但是它的返回值为0。但是,使用其他客户端网络可以看到很多消息。
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)
mConnection 是快速连接对象的地方。
但是,我仍然收到0条消息。
我遵循了this参考中的代码。
代码中有什么我想念的东西或我犯的错误吗?
答案 0 :(得分:0)
使用以下代码获取特定群组的聊天记录
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