【发布时间】:2021-05-20 01:04:29
【问题描述】:
我遇到了一个聊天应用。
由于我之前没有使用过 Ejabberd 服务器,因此我遇到了获取花名册列表的问题之一。
即使联系人列表在服务器上可用,我每次都将列表设为 nil。
以下是我用来获取花名册的方法。
以下是我获取联系人的方法:
在这段代码中,我每次都将查询列表设为 nil
-(void)fetchContacts {
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 addChild:query];
[self.xmppStream sendElement:iq];
}
确实收到IQ方法:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{
NSXMLElement *query = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"];
if (query) {
NSArray *item = [query elementsForName: @"item"];
NSMutableArray *arr = [[NSMutableArray alloc] init];
for (int i=0; i<[item count]; i++) {
NSString *jid=[[[item objectAtIndex:i] attributeForName:@"jid"] stringValue];
[arr addObject:jid];
}
[userDefault setValue:arr forKey:@"contacts"];
[userDefault synchronize];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ContactsData" object:nil];
}
return YES;
}
我已经从堆栈溢出尝试了许多解决方案,但对我没有任何效果。
谢谢!
【问题讨论】:
标签: ios objective-c xmpp ejabberd