iOS XMPP通过用户名搜索用户

5

我第一次在iOS中使用XMPP框架。有没有人可以帮助搜索使用他们的用户名的用户。

我尝试了下面链接中描述的方法,但没有成功。

iOS XMPP框架获取所有已注册用户

提前致谢。

2个回答

8

我终于明白了,我自己搞定了。

NSString *userBare1  = [[[[self appDelegate] xmppStream] myJID] bare];    

NSXMLElement *query = [NSXMLElement elementWithName:@"query"];
[query addAttributeWithName:@"xmlns" stringValue:@"jabber:iq:search"];


NSXMLElement *x = [NSXMLElement elementWithName:@"x" xmlns:@"jabber:x:data"];
[x addAttributeWithName:@"type" stringValue:@"submit"];

NSXMLElement *formType = [NSXMLElement elementWithName:@"field"];
[formType addAttributeWithName:@"type" stringValue:@"hidden"];
[formType addAttributeWithName:@"var" stringValue:@"FORM_TYPE"];
[formType addChild:[NSXMLElement elementWithName:@"value" stringValue:@"jabber:iq:search" ]];

NSXMLElement *userName = [NSXMLElement elementWithName:@"field"];
[userName addAttributeWithName:@"var" stringValue:@"Username"];
[userName addChild:[NSXMLElement elementWithName:@"value" stringValue:@"1" ]];

NSXMLElement *name = [NSXMLElement elementWithName:@"field"];
[name addAttributeWithName:@"var" stringValue:@"Name"];
[name addChild:[NSXMLElement elementWithName:@"value" stringValue:@"1"]];

NSXMLElement *email = [NSXMLElement elementWithName:@"field"];
[email addAttributeWithName:@"var" stringValue:@"Email"];
[email addChild:[NSXMLElement elementWithName:@"value" stringValue:@"1"]];

NSXMLElement *search = [NSXMLElement elementWithName:@"field"];
[search addAttributeWithName:@"var" stringValue:@"search"];
[search addChild:[NSXMLElement elementWithName:@"value" stringValue:searchField]];

[x addChild:formType];
[x addChild:userName];
//[x addChild:name];
//[x addChild:email];
[x addChild:search];
[query addChild:x];


NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"set"];
[iq addAttributeWithName:@"id" stringValue:@"searchByUserName"];
[iq addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"search.%@",[self appDelegate].hostName ]];
[iq addAttributeWithName:@"from" stringValue:userBare1];
[iq addChild:query];
[[[self appDelegate] xmppStream] sendElement:iq];

我已经在iOS中创建了一个应用程序,并连接并从xmpp获取用户,还能够获取离线消息。现在我需要使用XEP-0313获取特定用户的对话,如何实现XEP-0313? - Mahesh Narla

0

正确的答案。

以下代码

[iq addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"search.%@",[self appDelegate].hostName ]];

意味着

XMPPJID *myJID = [[[self appdelegate] xmppStream] myJID];
[iq addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"search.%@",myJID.domain]];

哪个委托将处理这个? - Solid Soft
1
明白了,- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq - Solid Soft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接