2014-09-22 2 views
3

XMPP를 사용하여 채팅하는 중반입니다. ejabberd 서버에 등록하고 로그인했습니다.XMPP ejabberd 서버에서 Rosters를 사용하여 모든 사용자에게 액세스하는 방법

웹 인터페이스에서 등록 된 사용자가 10 명이고 온라인 사용자가 4 명이 있음을 알 수 있습니다. 그러나 로스터 대표는 어떤 연락도하지 않습니다.

이 솔루션을 사용해 보았습니다. 나는 어떤 결과도 얻지 못했다.

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq 
{ 
NSXMLElement *queryElement = [iq elementForName: @"query" xmlns: @"jabber:iq:roster"]; 

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

    NSString *jid=[[[itemElements objectAtIndex:i] attributeForName:@"jid"] stringValue]; 
    [ArrayUsers addObject:jid]; 
} 
} 
return NO; 
} 

어떤 문제 일 수 있습니까? 연락처를 얻으려면 서버 설정을 구성해야합니까? 모든 사람이 기본적으로 액세스 할 수 있습니까? 또는 사용자 세부 정보를 얻고 CoreData 저장소에 자동으로 동기화되도록 쿼리를 만들어야합니까?

도움이 될 것입니다.

답변

2

문제는 공유 명단 모듈이 ejabberd 구성 파일에서 활성화되지 않았기 때문입니다. ejabberd 설정 모듈 섹션에서 mod_shared_roster을 활성화 할 수 있습니다 (수행 방법을 알고있는 사람들은 이해할 수 있습니다. 개인적으로 모릅니다!) 그래서 회사의 다른 사람들로부터 도움을 구했습니다. 그런 다음 공유 명단 옵션은 ejabberd 서버의 관리자 측 웹 인터페이스에서 사용할 수 있습니다. 당신은 로그인 및 명단 (RobbieHanson 예에 의한 XMMP 프레임 워크)의 자동 동기화를 위해 설정 한 경우, ejabbered configuration

지금 :

이제 모든 사용자가 다음과 같은 링크를 사용하여 모든 시체를 볼 수 확인하기 위해 서버를 구성 , 당신은 목록에 모든 사용자를 얻을 것이다.

0

공유 명단을 만들고 명단에서 모든 사용자를 확보하십시오. 확인 this

관련 문제