美文网首页iOS OC
iOS XMPP之创建群组

iOS XMPP之创建群组

作者: 流年小书 | 来源:发表于2018-06-27 10:41 被阅读2次
@property(nonatomic,strong)XMPPRoomCoreDataStorage *xmppRoomStorage;
@property(nonatomic,strong)WCXMPPTool *manager;
@property(nonatomic,strong)XMPPRoom *room;
//初始化房间
XMPPRoomCoreDataStorage *xmppRoomStorage = [[XMPPRoomCoreDataStorage alloc] init];
if (xmppRoomStorage==nil) {
          xmppRoomStorage = [[XMPPRoomCoreDataStorage alloc] init];
 }

NSString *jidRoom = [NSString stringWithFormat:@"%@@conference.bogon", _RoomNameTV.text];
XMPPJID *jid = [XMPPJID jidWithString:jidRoom];
self.room = [[XMPPRoom alloc]initWithRoomStorage:xmppRoomStorage jid:jid dispatchQueue:dispatch_get_main_queue()];

[_room activate:self.manager.xmppStream];

[_room addDelegate:self delegateQueue:dispatch_get_main_queue()];

//假如密码为空
if ([_passwordTV.text isEqualToString:@""]) {

      [_room joinRoomUsingNickname:_signatureTV.text history:nil];

      [_room fetchConfigurationForm];

      [_room configureRoomUsingOptions:nil];

      [_room addDelegate:self delegateQueue:dispatch_get_main_queue()];

  }else{//假如有密码

       [_room joinRoomUsingNickname:_signatureTV.text history:nil   password:_passwordTV.text];
       [_room fetchConfigurationForm];
       [_room configureRoomUsingOptions:nil];
       [_room addDelegate:self delegateQueue:dispatch_get_main_queue()];
   }



//创建房间的配置信息
-(void)sendDefaultRoomConfig
{
    NSXMLElement *x = [NSXMLElement elementWithName:@"x" xmlns:@"jabber:x:data"];
    NSXMLElement *field = [NSXMLElement elementWithName:@"field"];
    [field addAttributeWithName:@"label" stringValue:@"Make Room Persistent?"];
    [field addAttributeWithName:@"type" stringValue:@"boolean"];
    [field addAttributeWithName:@"var" stringValue:@"muc#roomconfig_persistentroom"];
    NSXMLElement *value = [NSXMLElement elementWithName:@"value"];
    [value setStringValue:@"1"];
    [field addChild:value];
    [x addChild:field];

    NSXMLElement *fieldMaxInviteMember = [NSXMLElement elementWithName:@"field"];
    [fieldMaxInviteMember addAttributeWithName:@"label" stringValue:@"Allow Occupants to Invite Others?"];
    [fieldMaxInviteMember addAttributeWithName:@"type" stringValue:@"boolean"];
    [fieldMaxInviteMember addAttributeWithName:@"var" stringValue:@"muc#roomconfig_allowinvites"];
    NSXMLElement *inViteValue = [NSXMLElement elementWithName:@"value"];
    [inViteValue setStringValue:@"1"];
    [fieldMaxInviteMember addChild:inViteValue];
    [x addChild:fieldMaxInviteMember];
    //仅仅会员开放
    NSXMLElement *fieldOnlyMember = [NSXMLElement elementWithName:@"field"];
    [fieldOnlyMember addAttributeWithName:@"label" stringValue:@"Make Room Members-Only?"];
    [fieldOnlyMember addAttributeWithName:@"type" stringValue:@"boolean"];
    [fieldOnlyMember addAttributeWithName:@"var" stringValue:@"muc#roomconfig_membersonly"];
    NSXMLElement *onlyMemberValue = [NSXMLElement elementWithName:@"value"];
    [onlyMemberValue setStringValue:@"1"];
    [fieldOnlyMember addChild:onlyMemberValue];
    [x addChild:fieldOnlyMember];

    //是否要密码
    if ([_passwordTV.text isEqualToString:@""]) {
        NSLog(@"没密码");
    }else{
        NSLog(@"有密码");
        NSXMLElement *fieldneedPWord = [NSXMLElement elementWithName:@"field"];
        [fieldneedPWord addAttributeWithName:@"label" stringValue:@"Password Required to Enter?"];
        [fieldneedPWord addAttributeWithName:@"type" stringValue:@"boolean"];
        [fieldneedPWord addAttributeWithName:@"var" stringValue:@"muc#roomconfig_passwordprotectedroom"];
        NSXMLElement *fieldneedPWordValue = [NSXMLElement elementWithName:@"value"];
        [fieldneedPWordValue setStringValue:@"1"];
        [fieldneedPWord addChild:fieldneedPWordValue];
        [x addChild:fieldneedPWord];
    }


    //desciption
    if ([_signatureTV.text isEqualToString:@""]) {
        NSLog(@"没有描述");
    }else{
        NSLog(@"%@",_signatureTV.text);
        NSXMLElement *fieldesc = [NSXMLElement elementWithName:@"field"];
        [fieldesc addAttributeWithName:@"label" stringValue:@"Short Description of Room"];
        [fieldesc addAttributeWithName:@"type" stringValue:@"text-single"];
        [fieldesc addAttributeWithName:@"var" stringValue:@"muc#roomconfig_roomdesc"];
        NSXMLElement *fieldescValue = [NSXMLElement elementWithName:@"value"];
        [fieldescValue setStringValue:_signatureTV.text];
        [fieldesc addChild:fieldescValue];
        [x addChild:fieldesc];

    }


    NSXMLElement *fielpassword= [NSXMLElement elementWithName:@"field"];
    [fielpassword addAttributeWithName:@"label" stringValue:@"The Room Password"];
    [fielpassword addAttributeWithName:@"type" stringValue:@"text-single"];
    [fielpassword addAttributeWithName:@"var" stringValue:@"muc#roomconfig_roomsecret"];
    NSXMLElement *fielpasswordValue = [NSXMLElement elementWithName:@"value"];
    [fielpasswordValue setStringValue:_passwordTV.text];
    [fielpassword addChild:fielpasswordValue];
    [x addChild:fielpassword];

    //    <field
    //    var='muc#roomconfig_roomsecret'
    //    type='text-private'
    //    label='The Room Password'/>
    //    <field



    //最大成员
    NSXMLElement *fieldMaxMember = [NSXMLElement elementWithName:@"field"];
    [fieldMaxMember addAttributeWithName:@"label" stringValue:@"Allow Occupants to Invite Others?"];
    [fieldMaxMember addAttributeWithName:@"type" stringValue:@"list-single"];
    [fieldMaxMember addAttributeWithName:@"var" stringValue:@"muc#roomconfig_maxusers"];
    NSXMLElement *maxvVlue = [NSXMLElement elementWithName:@"value"];
    [maxvVlue setStringValue:@"30"];
    [fieldMaxMember addChild:maxvVlue];
    [x addChild:fieldMaxMember];
    [_room configureRoomUsingOptions:x];

}

// 房间创建成功后在配置永久属性
- (void)xmppRoomDidCreate:(XMPPRoom *)sender
{
    [self sendDefaultRoomConfig];

}

相关文章

网友评论

    本文标题:iOS XMPP之创建群组

    本文链接:https://www.haomeiwen.com/subject/nbcbyftx.html