gpt4 book ai didi

ios - 使用 XMPP 从 OpenFire 获取所有用户名

转载 作者:行者123 更新时间:2023-11-28 22:20:38 25 4
gpt4 key购买 nike

在我的应用程序中,我需要从 OpenFire 获取All the UserName

我使用了下面的代码,但它没有提供 nil 数据。

我觉得我的 didReceiveIQ 方法有问题,但第一次使用 XMPP,所以没有得到实际问题。

我获取数据的代码是

- (void)getAllRegisteredUsers {

NSError *error = [[NSError alloc] init];
NSXMLElement *query = [[NSXMLElement alloc] initWithXMLString:@"<query xmlns='http://jabber.org/protocol/disco#items' node='all users'/>"
error:&error];
XMPPIQ *iq = [XMPPIQ iqWithType:@"get"
to:[XMPPJID jidWithString:[NSString stringWithFormat:@"Domain Name with jid"]]
elementID:[xmppStream generateUUID] child:query];
[xmppStream sendElement:iq];
}


- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq
{
NSXMLElement *queryElement = [iq elementForName: @"query" xmlns: @"http://jabber.org/protocol/disco#items"];

NSLog(@"queryelement %@",queryElement);

if (queryElement) {

NSLog(@"query in if");
NSArray *itemElements = [queryElement elementsForName: @"item"];
NSMutableArray *mArray = [[NSMutableArray alloc] init];
for (int i=0; i<[itemElements count]; i++) {

NSString *jid=[[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue];
[mArray addObject:jid];

NSLog(@"User in OpenFire = %@",jid);

}

NSLog(@"mArray = %@",mArray);

}

return NO;
}

感谢任何形式的帮助....

最佳答案

我正在努力让所有注册用户从 openfire 进入我的应用程序。我尝试了上述所有方法,但没有帮助我!尝试了很多之后,我得到了一个解决方案来获取所有注册用户......这是代码:

- (void)getAllRegisteredUsers {

NSError *error = [[NSError alloc] init];
NSXMLElement *query = [[NSXMLElement alloc] initWithXMLString:@"<query xmlns='jabber:iq:roster'/>" error:&error];
XMPPIQ *iq = [DDXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addAttributeWithName:@"none" stringValue:@"ANY_ID_NAME"];
[iq addAttributeWithName:@"both" stringValue:@"ANY_ID_NAME"];
[iq addChild:query];
[xmppStream sendElement:iq];
}

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{

NSXMLElement *queryElement = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"];

if (queryElement) {
NSArray *itemElements = [queryElement elementsForName: @"item"];
NSMutableArray *mArray = [[NSMutableArray alloc] init];
for (int i=0; i<[itemElements count]; i++) {

NSString *jid=[[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue];
[mArray addObject:jid];
}
NSLog(@"%@",mArray);
}
return YES;
}

这对我有用,希望对其他人也有用...:)

关于ios - 使用 XMPP 从 OpenFire 获取所有用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20515049/

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