2014-03-04 1 views
0

나는 openfire 서버를 사용하여 채팅 응용 프로그램을 개발하기 위해 xmpp 프레임 워크를 사용하고 있습니다. 사용자는 대역 내 계정 등록을 사용하여 서버에 등록됩니다. 그러나 나는 사용자가 다른 사용자의 로스터 목록에 어떻게 추가 될지 이해할 수 없다. 앱을 사용하는 사용자가 버디 요청을 보낼 수 있도록 서버에 등록 된 모든 사용자를 가져와야합니까? 아니면 어떤 사용자가 온라인 상태가되면 서버는 다른 사용자에게이를 브로드 캐스트해야합니다. 나는 흐름에 어려움을 겪고있다. 제발 도와주세요.대역 내 계정 등록 후 무엇

답변

5

두 가지 방법이 있습니다.

  1. 모든 사용자를 서버에서 가져올 수있는 서버에 사용자 데이터베이스가 있습니다. 서버에 있습니다.
  2. Search api of openfire을 사용하십시오. 당신이 어떤 웹 서비스를 사용하지 않는 경우, 당신은 당신이 하나를 선택해야 할 곳에서 JID를의 목록을 얻을 수있는 검색의 응답으로 xep-0055

을 구현할 수 있습니다. 지금 다시의 Openfire에서 제공 한 명단 목록

  1. 사용자 서비스 플러그인을 설치하고 사용 add roster api에 그 JID를 추가하는 두 가지 방법이 있습니다.

XMPPJID *newBuddy = [XMPPJID jidWithString:@"jid"]; 
[xmppRoster addUser:newBuddy withNickname:nil]; 
아래와 같이 앱에서

  • 다른 사용자가 존재

    if([presenceType isEqualToString:@"subscribe"]) 
    { 
        NSXMLElement *presenceToRequest = [NSXMLElement elementWithName:@"presence"]; 
        [presenceToRequest addAttributeWithName:@"type" stringValue:@"subscribed"]; 
        [presenceToRequest addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"%@", [presence fromStr]]]; 
        [presenceToRequest addAttributeWithName:@"from" stringValue:[NSString stringWithFormat:@"%@", [presence toStr]]]; 
        [[self xmppStream] sendElement:presenceToRequest]; 
    } 
    

    Refer this link for more info

    구경에게 사용이 목록 밖으로 IQ를 통해 그것을 얻을 것이다 다양한 목적.

    PS :의 Openfire와 링크의 Openfire의 IP와 포트

    을 수정 한 후 작동합니다