【发布时间】: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)
mConnection 是 smack 连接 对象。
但是,我仍然在结果中收到 0 条消息。
我遵循了来自this 参考的代码。
代码中有什么我遗漏的地方或我犯的错误吗?
【问题讨论】:
-
您确定正在维护 MAM 存档吗?在 Openfire 上,您需要为此安装监控插件。此外,监控插件必须配置为存储消息(默认情况下不这样做)。
-
我也试过了,但没有收到过去的消息。一对一聊天效果很好
-
@MihirPatel 我用最新版本解决了。
标签: android xmpp openfire smack multiuserchat