2016-02-01 3 views
0

У меня проблема с выбором всех зарегистрированных пользователей в проекте XMPP ios. Я использую openfire.fetch всех зарегистрированных пользователей в xmpp ios in openfire

Ниже код я использую, но она всегда дает мне нулю в arraylist.:-

- (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 *jid2=[[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue]; 
      [mArray addObject:jid2]; 
     } 
     NSLog(@"didReceiveIQ Array======%@",mArray); 
     [[NSNotificationCenter defaultCenter] postNotificationName:@"FriendRequestSend" object:nil]; 
    } 
    return NO; 
} 

Хотя я могу видеть 3 пользователей в браузере. Please check the image Примечание: я видел сообщение iOS XMPP framework get all registered users , но он не работает.

Пожалуйста, помогите мне, и мне советы есть ошибка в коде

+0

Код, который вы разместили выше, получает контакты, которые были добавлены в ваш список, а не все зарегистрированные пользователи. Вопрос, который вы связали, задает вопрос о том, как это сделать с помощью ejabberd. Способ сделать это с Openfire, вероятно, отличается. – legoscia

+0

@legoscia благодарит за ответ. Можете ли вы указать мне способ реализовать это с помощью openfire. – Developer

ответ

0

Если вы можете внести изменения в Openfire, Вы можете создать сервлет HTTP (услуги) в админ приложение, которое будет просто вернуть всех пользователей из ofUser Таблица.
Или пользовательский пакет, если вы хотите использовать XMPP.

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; 
} 

Это работает для меня, надеюсь, что он будет работать для других, а также ... :)

+0

где вы назвали 'getAllRegisteredUsers'? – Bittoo

+0

У меня есть viewController, где я показываю список всех пользователей. Я вызываю «getAllRegisteredUsers» в свой метод viewDidLoad(). –

Смежные вопросы