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

时间:2017-02-06 03:47:50

标签: ios xmpp xmppframework node-xmpp

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

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

由于

1 个答案:

答案 0 :(得分:0)

关于持续性房间的iOS XMPPFramework - Room / chat messages history提示(@Moral'答案),你必须记住

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 (groupchat)如何运作

此外,关于如何配置MUC的答案可能会对您有所帮助XMPPFramework - Implement Group Chat (MUC)