0

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

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

谢谢

4

1 回答 1

0

按照iOS XMPPFramework - 房间/聊天消息历史提示(@Moral 的回答)关于 Persistant 房间,您必须记住

1) 群聊名称,作为 JID (JabberID) 是唯一的 ID,不能以任何方式更改。所以你无法改变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(群聊)的工作原理

更多,这个关于如何配置 MUC 的答案可以帮助你XMPPFramework - 实现群聊(MUC)

于 2017-02-06T11:12:10.373 回答