我正在使用XMPPFramework编写iOS聊天应用程序,我想知道创建新消息的最佳方法是什么,以便我可以映射在其中一个委托方法中返回的XMPPMessage
到发送的原始邮件。我想这样做,所以我可以告诉发送消息成功或不成功(所以我可以缓存并重新发送)。
当用户点击客户端上的发送密钥时,将调用以下代码来创建和发送消息:
NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:messageText];
NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"to" stringValue:recipientJID];
[message addChild:body];
[[self xmppStream] sendElement:message];
然后我将内容,收件人,时间戳等存储到数组中的自定义对象(基本上是message
中的所有内容)。
我希望能够将数组中的对象与这些委托方法中返回的XMPPMessage
对象进行匹配:
- (void)xmppStream:(XMPPStream *)sender didFailToSendMessage:(XMPPMessage *)message error:(NSError *)error
{
}
- (void)xmppStream:(XMPPStream *)sender didSendMessage:(XMPPMessage *)message
{
}
是否有一个属性我可以在message
变量中添加某种唯一标识符,该变量通过XMPPStream
发送,然后显示在传递给这些委托的XMPPMessage
内方法
答案 0 :(得分:2)
为什么不发送XMPPMessage
而不是NSXMLElement
?这样,didFailToSendMessage
和didSendMessage
中传递的对象将与您发送的对象相匹配。此外,您可以设置elementId
来识别节(消息,智商或存在)
XMPPMessage *message = [XMPPMessage messageWithType:@"chat"
to:someJid
elementID:elementId];
[[self xmppStream] sendElement:message];