如何在 iOS 中使用 XMPP 编辑现有群组名称

How to edit name of the existing Group name using XMPP in iOS

目前我正在制作聊天应用程序,我需要编辑群组名称。

如果有人有解决方案,请发给我,因为我花了很多时间编辑组名,但没有找到任何解决方案。

谢谢

根据 iOS XMPPFramework - Room / chat messages history 关于 Persistant 房间的提示(@Moral 的回答),您必须牢记

1) 群聊名称,作为JID (JabberID) 是唯一的ID,不能以任何方式更改。所以你不能改变 mychatroom1@conference.myserver

2) 可以更改群聊主题(and/or 描述)。我找不到一个像样的教程,但是,看看以前的答案,你必须添加类似的东西(看点 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)