Как отредактировать имя существующей группы с помощью XMPP в iOS
В настоящее время я делаю приложение чата, и мне нужно изменить имя группы.
если у кого-то есть решение, пожалуйста, пришлите мне, потому что я трачу много часов на редактирование названия группы, но не нашел никакого решения.
Спасибо
1 ответ
Следуя подсказкам iOS XMPPFramework - подсказки истории сообщений комнаты / чата (ответ @Moral) о комнате Persistant, вы должны помнить, что
1) Имя группового чата, так как JID (JabberID) является уникальным идентификатором и не может быть изменен никаким образом. Так что вы не можете изменить mychatroom1@conference.myserver
2) Тема группового чата (и / или описание) может быть изменена. Я не могу найти достойный учебник по этому поводу, однако, глядя на предыдущий ответ, вам придется добавить что-то подобное (см. Пункт 3):
-(void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm {
NSXMLElement *newConfig = [configForm copy];
NSArray *fields = [newConfig elementsForName:@"field"];
for (NSXMLElement *field in fields) {
NSString *var = [field attributeStringValueForName:@"var"];
// Change room name
if ([var isEqualToString:@"muc#roomconfig_roomname"]) {
[field removeChildAtIndex:0];
[field addChild:[NSXMLElement elementWithName:@"value" stringValue:@"myNewName"]];
}
}
}
[sender configureRoomUsingOptions:newConfig];
}
Обратите внимание: если у пользователя нет прав на изменение имени комнаты, необходимо включить разрешения на изменение имени. Опять же, при отправке формы, вы должны отправить перед чем-то вроде
-(void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm {
NSXMLElement *newConfig = [configForm copy];
NSArray *fields = [newConfig elementsForName:@"field"];
for (NSXMLElement *field in fields) {
NSString *var = [field attributeStringValueForName:@"var"];
// Make Room Persistent
if ([var isEqualToString:@"muc#roomconfig_changesubject"]) {
[field removeChildAtIndex:0];
[field addChild:[NSXMLElement elementWithName:@"value" stringValue:@"true"]];
// if does not works: [field addChild:[NSXMLElement elementWithName:@"value" booleanValue:@"true"]];
}
}
[sender configureRoomUsingOptions:newConfig];
}
Посмотрите на официальную спецификацию, чтобы понять, как работает Multiuserchat (groupchat)
Более того, этот ответ о том, как настроить MUC, может помочь вам в XMPPFramework - Implement Group Chat (MUC)