gpt4 book ai didi

ios - XMPPMessageArchivingCoreDataStorage 重复条目 - XMPP MUC

转载 作者:行者123 更新时间:2023-11-29 00:36:41 27 4
gpt4 key购买 nike

我正在使用适用于 iOS 的 XMPPFramework 来实现具有默认核心数据 (XMPPMessageArchivingCoreDataStorage) 的群聊 (MUC)。

我能够在两台设备之间发送和接收消息。

self.xmppRoom = //Get room instance;
[message addAttributeWithName:@"id" stringValue:[self.xmppStream generateUUID]];
[self.xmppRoom sendMessage:message];

XML 格式:

<message><request xmlns="urn:xmpp:receipts"></request><body>{
"mediaItem" : "0",
"body" : "Sending Message 1"
}</body><thread>2012C10A-6CAD-4C29-86BD-D93334FA74C8</thread></message>

当我发送消息时,在 XMPPMessageArchiving.sqlite 数据库中,我可以看到同一消息的两个条目(传出 1 - 和传出 0)。

Outgoing Message

正如你在上面看到的,线程 id 是相同的,传出是 0 和 1 表示传入(接收)和传出(发送)消息。

问题一:这是 XMPPMessageArchiving 核心数据保存传入和传出消息的预期行为吗?

如果是,那么我想我只需要从这个数据库中获取外发消息(ZOUTGOING = 1)并显示在屏幕上。这是正确的吗?


每当我退出并重新打开应用程序或重新建立连接 (XMPPStream) 并进入房间时 ([self.xmppRoom joinRoomUsingNickname:[self.myJID user] history:nil];),我收到与之前发送的消息相同的消息,传入值为 0。每次重新建立连接时都会发生这种情况。如何避免。

Duplication

如果我收到来自另一个用户的消息,它将添加到此数据库中,传出为“0”。我如何过滤由另一个用户发送的传入消息和我发送的消息(图 1)。

消息节:

<message id="5CF46E24-BF92-48AC-B13D-A1D7B4B45942" to="hmgroup@conference.local0094.local" type="groupchat"><request xmlns="urn:xmpp:receipts"/><body>{
"mediaItem" : "0",
"body" : "Sending Message 1"
}</body><thread>2012C10A-6CAD-4C29-86BD-D93334FA74C8</thread></message>

感谢任何帮助。

最佳答案

首先,对于 MUC 重复消息。您应该选择 XMPPRoomCoreDataStorage 而不是 XMPPMessageArchiving。我个人不喜欢 XMPPMessageArchiving 还处理 MUC 消息的行为。

其次,默认情况下,MUCRoom 会向新加入的用户发送一些历史记录,数量由 mod_muc: history_size: 下的配置决定。您可以将其设置为 0 以禁用此功能。

关于ios - XMPPMessageArchivingCoreDataStorage 重复条目 - XMPP MUC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438070/

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