, чтобы получить список номеров:
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];
чек на ответ в метод делегата:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{
DDLogVerbose(@"%@", [iq description]);
return NO;
}
присоединиться или создать комнату
XMPPRoomMemoryStorage * _roomMemory = [[XMPPRoomMemoryStorage alloc]init];
NSString* roomID = @"[email protected]";
XMPPJID * roomJID = [XMPPJID jidWithString:roomID];
XMPPRoom* xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:_roomMemory
jid:roomJID
dispatchQueue:dispatch_get_main_queue()];
[xmppRoom activate:self.xmppStream];
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppRoom joinRoomUsingNickname:@"myNickname"
history:nil
password:nil];
проверка для ответа в методах делегата XMPPRoom:
- (void)xmppRoomDidCreate:(XMPPRoom *)sender{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
- (void)xmppRoomDidJoin:(XMPPRoom *)sender{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
обновление
настроить номер:
после:
[xmppRoom joinRoomUsingNickname:self.xmppStream.myJID.user
history:history
password:nil];
добавить:
[xmppRoom fetchConfigurationForm];
и проверить ответ на:
- (void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm{
DDLogVerbose(@"%@: %@ -> %@", THIS_FILE, THIS_METHOD, sender.roomJID.user);
}
Просмотрите configForm
объект, и изменения по мере необходимости, а затем отправить его с [sender configureRoomUsingOptions:newConfig];
Например: изменить конфигурацию, чтобы сделать комнату постоянной вы может добавить что-то вроде:
NSXMLElement *newConfig = [configForm copy];
NSArray* fields = [newConfig elementsForName:@"field"];
for (NSXMLElement *field in fields) {
NSString *var = [field attributeStringValueForName:@"var"];
if ([var isEqualToString:@"muc#roomconfig_persistentroom"]) {
[field removeChildAtIndex:0];
[field addChild:[NSXMLElement elementWithName:@"value" stringValue:@"1"]];
}
}
[sender configureRoomUsingOptions:newConfig];
(i n Ot знакомы с NSXMLElement, так что, может быть, есть лучший способ, чтобы изменить значение)
Привет всем, спасибо вам всем и starckoverflow, я могу создать group и отправлять приглашения другим пользователям с обоими хранилищами (основные данные и память). Проблема заключается в том, когда я создаю вторую группу, она удаляет данные первой группы из хранилища данных Core и также как мы можем автоматически присоединяться к другому пользователю? – Mangesh