【发布时间】:2017-03-19 04:42:45
【问题描述】:
我正在使用 XMPPFramework for iOS 来实现具有默认核心数据 (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)。
如上所示,thread id 相同,outgoing 为 0,1 表示传入(received)和传出(sent)消息。
问题 1: 这是 XMPPMessageArchiving 核心数据保存传入和传出消息的预期行为吗?
如果是,那么我认为我必须从该数据库中仅获取传出消息 (ZOUTGOING = 1) 并显示在屏幕上。这是正确的吗?
每当我退出并重新打开应用程序或重新建立连接 (XMPPStream) 并进入房间 ([self.xmppRoom joinRoomUsingNickname:[self.myJID user] history:nil];) 时,我都会收到我之前发送的相同消息,传入值为 0。这将发生在每个时间我重新建立连接。怎样才能避免呢。
如果我收到来自另一个用户的消息,它将被添加到此数据库中,外发为“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>
感谢任何帮助。
【问题讨论】:
标签: ios sqlite core-data xmpp xmppframework