有没有办法可以让所有在openfire服务器上使用InBand注册注册的用户。我检查了以下链接:
1。ios-xmpp-framework-get-all-registered-users
2。ios-xmpp-framework-with-openfire-server-get-all-registered-users
但这些链接没有帮助。如果我使用以上链接中使用的以下代码:
- (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:@"DOMAIN"]
elementID:[xmppStream generateUUID] child:query];
[xmppStream sendElement:iq];
}
我收到503错误代码,服务不可用消息。任何人都可以告诉我,如果我在iOS端做错了什么,或者服务器丢失了什么。欢迎提出所有建议。
答案 0 :(得分:0)
需要将“DOMAIN”更改为您的服务器名称
答案 1 :(得分:0)
我正在努力让所有注册用户从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;
}
这对我有用,希望它也适用于其他人...... :)