gpt4 book ai didi

java - XMPP XEP-0313 Smack Android 获取所有花名册成员的最新消息

转载 作者:行者123 更新时间:2023-12-02 10:54:38 26 4
gpt4 key购买 nike

一旦我有了花名册,我就可以循环遍历所有成员并使用 MamManager 进行查询mamManager.mostRecentPage(jid, QUERY_META_DATA_PAGE_SIZE)

但是,这只能让我一次获取一个 jid 的数据,这意味着如果用户有 1000 个连接,我必须进行 1000 个网络调用。有没有办法获取多个 jid 的最新消息?

编辑

所以我已经将 smack 从 4.2.3 更新到 4.3 以获取最新的 api,并且我仍然可以找到一种方法来执行我想要的查询,而无需循环 jids

for (int i = 0; i < jidList.size(); i++) {
MamQueryArgs mamQueryArgs = MamQueryArgs.builder()
.setResultPageSize(1)
.limitResultsToJid(jidList.get(i))
.queryLastPage().build();
MamQuery mamQuery = mamManager.queryArchive(mamQueryArgs);
}

因此,新用户首次登录时,我将访问服务器 1000 次

编辑2

实际上,第一次登录时,上面的查询不会返回任何内容,可能是因为本地存档为空,所以我必须执行以下操作:

for (Jid : jidList) {
MamQuery mamQuery = mamManager.queryMostRecentPage(jid, 1);
}

最佳答案

Is there any way to get the most recent message for multiple jids?

这是一个与您的帖子标题“获取所有花名册成员的最新消息”中的问题不同的问题,不是吗?但我相信这两个问题的答案是相同的。消息存档管理 (XEP-0313) 查询查询存档。 “jid”参数仅将结果限制为仅包含具有该 JID 的消息。

如果您查询本地用户存档(常见情况),那么您可以使用 Smack 简单查询最后 X 条消息

MamQueryArgs mamQueryArgs = MamQueryArgs.builder()
.setResultPageSize(<X>)
.queryLastPage()
.build();
MamQuery mamQuery = mamManager.queryArchive(mamQueryArgs);

有关更多信息,请查看MamManager's javadoc .

关于java - XMPP XEP-0313 Smack Android 获取所有花名册成员的最新消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com