문제

xmppframework를 사용하여 iPhone에서 채팅 응용 프로그램을 개발하고 있습니다. 모든 것이 잘 작동하지만 그 시점에 붙어 있습니다. 모든 공공 실의 목록을 검색하고 싶지만 xmppframework에는 방법이 없습니다. 그렇다면 누군가 나를이 문제를 해결하도록 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

다음은 모든 방의 목록을 얻는 코드입니다.

NSString* server = @"chat.shakespeare.lit"; //or whatever the server address for muc is
XMPPJID *servrJID = [XMPPJID jidWithString:server];
XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:servJID];
[iq addAttributeWithName:@"from" stringValue:[xmppStream myJID].full];
NSXMLElement *query = [NSXMLElement elementWithName:@"query"];
[query addAttributeWithName:@"xmlns" stringValue:@"http://jabber.org/protocol/disco#items"];
[iq addChild:query];
[xmppStream sendElement:iq];

특정 사용자의 공간을 얻으려는 코드가 있으면 공유하십시오.

다른 팁

이 코드를 사용하여 서버를 직접 쿼리하지만 가장 좋은 방법은 확실하지 않습니다.

 XMPPIQ *iq = [[XMPPIQ alloc] initWithType:@"get"];
 NSString* conferenceHost = [NSString stringWithFormat:@"conference.%@", _xmppStream.hostName];
[iq addAttributeWithName:@"from" stringValue:conferenceHost];
[iq addAttributeWithName:@"to" stringValue:_host];
DDXMLElement *query = [DDXMLElement elementWithName:@"query" xmlns:@"http://jabber.org/protocol/disco#items"];
[iq addChild:query];
[_xmppStream sendElement:iq];

이것이 누군가를 도울 수 있기를 바랍니다.

그건 그렇고,이 솔루션을 채택하면 대의원 방법에서 일부 구문 분석을 수행해야합니다.

 - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {
  }  

가장 좋은 방법은 연결이 시작되면 방법을 구문 분석하는 것입니다.

- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence {
    /* parse */
}

그런 다음 확인합니다

  [[sender] from] domain]

"회의"가 포함 된 경우. 그런 다음 발신자가 방이라고 생각할 수 있으며 마지막으로 NSMutableArray에 추가 할 수 있습니다. 또한 새로운 방이 만들어지면 didreceivePresence가 호출되므로 Parser는 새로운 방을 추가합니다.

그래서 당신은 다음과 같습니다.

NSMutableArray* rooms;

방법은 다음과 같습니다.

-(NSMutableArray*)getRooms {
    return _rooms;
}  
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top