【问题标题】:create Custom Stanza using XMPP in iphone在 iphone 中使用 XMPP 创建自定义节
【发布时间】:2014-11-21 02:41:47
【问题描述】:

我曾尝试使用以下代码创建自定义数据包,但它在进入 XMPP 生命周期时发生了变化。

NSString * strUser = [[NSUserDefaults standardUserDefaults] valueForKey:@"kXMPPmyJID"];

XMLWriter* xmlWriter = [[XMLWriter alloc]init];

[xmlWriter writeStartElement:@"presence"];
[xmlWriter writeAttribute:@"from" value:strUser];
[xmlWriter writeAttribute:@"to" value:appDelegate.chatUser];
[xmlWriter writeAttribute:@"type" value:@"typing.."];
[xmlWriter writeEndElement];

NSString* xml = [xmlWriter toString];

NSXMLElement *xmlElement = [[NSXMLElement alloc] initWithXMLString:xml error:nil];
XMPPPresence *presence = [XMPPPresence presenceFromElement:xmlElement];
[appDelegate.xmppStream sendElement:presence];

【问题讨论】:

    标签: ios objective-c iphone xmpp xmppframework


    【解决方案1】:

    如果你检查 xmpp 协议 (http://xmpp.org/rfcs/rfc3921.html) 他们说类型属性必须具有协议中规定的值之一。如果要添加自定义属性,则应将其添加到自定义标签中,但接收方必须正确处理。

    【讨论】:

    • 实际上我想创建自定义数据包..我不想添加任何自定义属性或标签..
    • 它添加了 标签,当我发送以下 PRESENSE:::::::
    • XMPPStream 类在该元素中确实发生了变化
    【解决方案2】:

    您应该在您的节中添加一个自定义元素,而不是将其设置为存在的属性:

    [xmlWriter writeStartElement:@"presence"];
    [xmlWriter writeAttribute:@"from" value:strUser];
    [xmlWriter writeAttribute:@"to" value:appDelegate.chatUser];
    [xmlWriter writeStartElementWithNamespace:@"vikram" localName:@"typing"];
    [xmlWriter writeEndElement];
    [xmlWriter writeEndElement];
    

    将创建:

    <presence id='...' from='...' to='...'><typing xmlns='vikram'/></presence>
    

    虽然使用状态来发送打字通知是个坏主意。为什么不使用XEP-0085

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 2012-08-19
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多