2016-02-01 48 views
0

我在獲取XMPP ios項目中的所有註冊用戶時遇到了問題。 我正在使用openfire。在openfire中獲取xmpp ios中的所有註冊用戶

下面是我使用的代碼,但它總是給我的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的變化,您可以開發管理應用程序一個servlet(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,我顯示所有用戶的列表。我在其viewDidLoad()方法中調用「getAllRegisteredUsers」。 –