Как отредактировать имя существующей группы с помощью 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)

Другие вопросы по тегам