2016-04-01 33 views
0

Sohbet uygulamasını xmpp ejabberd kullanarak geliştiriyorum. Ben app ne benzer bir XMPP grup sohbeti geliştirmek istiyorum. XMPP grup sohbet ayarları XMPP sunucumda yapıldı. Odaya & odayı başarıyla katıyorum. Ama katıldığım odaları istiyorum. Benim sunucudan grupların listesini alıyorum yukarıdaki koddan sunucuyaBelirli bir kullanıcı tarafından xmpp'ye katılan odaların listesi nasıl alınır?

NSString* server = @"conference.test.com"; 
XMPPJID *serverJID = [XMPPJID jidWithString:server]; 
XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:serverJID]; 
[iq addAttributeWithName:@"from" stringValue:[[APP_DELEGATE xmppStream] myJID].full]; 
NSXMLElement *query = [NSXMLElement elementWithName:@"query"]; 
[query addAttributeWithName:@"xmlns" stringValue:@"http://jabber.org/protocol/disco#items"]; 
[iq addChild:query]; 
[[APP_DELEGATE xmppStream] sendElement:iq]; 

gelen grupların listesi getirilirken için aşağıdaki iq kullanıyorum ama ben katıldı grupların listesini istiyorum veya gruplar arasından daveti aldım. & oluşturmak için

Kod kimse çözüm soruya cevap lütfen varsa

-(void) CreateRoom:(NSString *)roomJid { 


static dispatch_once_t queueCreationGuard; 
static dispatch_queue_t queue; 
dispatch_once(&queueCreationGuard, ^{ 
    queue = dispatch_queue_create("com.something.myapp.backgroundQueue", 0); 
}); 

XMPPRoomMemoryStorage *roomStorage = [[XMPPRoomMemoryStorage alloc] init]; 
XMPPJID *roomJID = [XMPPJID jidWithString:roomJid]; 
XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomStorage jid:roomJID dispatchQueue:queue]; 
[xmppRoom activate:[self xmppStream]]; 
[xmppRoom addDelegate:self 
     delegateQueue:queue]; 

NSXMLElement *history = [NSXMLElement elementWithName:@"history"]; 
[history addAttributeWithName:@"maxstanzas" stringValue:@"0"]; 

[xmppRoom joinRoomUsingNickname:[self xmppStream].myJID.user 
         history:history 
         password:nil]; 
} 


- (void)xmppRoomDidCreate:(XMPPRoom *)sender 
{ 
    NSLog(@"Room Created"); 
} 
- (void)xmppRoomDidJoin:(XMPPRoom *)sender 
{ 
    NSLog(@"Room Joined"); 
} 

şöyle odasıdır katılmak. Teşekkür

+0

nasıl başardınız bunu yapmak için? –

cevap

0

Bunu kullanabilirsiniz:

var muc = XMPPMUC(dispatchQueue: DispatchQueue.main) 
    muc?.activate(stream) //Here stream is the XMPPStream 
    muc?.addDelegate(self, delegateQueue: DispatchQueue.main) 
    muc?.discoverRooms(forServiceNamed: "conference.localhost") 

(Swift 3.0) VEYA bu kullanabilirsiniz:

let xmlstring: String = String("<query xmlns='http://jabber.org/protocol/disco#items'/>") 
let newQuery = try! DDXMLElement(xmlString: xmlstring) 
let newIq = XMPPIQ(type: "get", to: XMPPJID(string:"conference.localhost"), elementID: stream.generateUUID(), child: newQuery) 
stream.send(newIq) 
İlgili konular