ios xmpp+openfire 群聊

最近在做直播的项目里面用的的群聊的功能,规定是要用xmpp+openfire。以前也没做过通过网上找资料最终还是把这部分功能实现了,只是简单的群聊天功能,当然这里我也只是把网上找到的东西分享给大家而已想学习的可以看一下。要实现群聊得有以下几个步骤:

一、安装openfire

这部分不详细说明,网上大把的资料,根据教程安装好就是了。当openfire安装好了后肯定会看到这样的界面:


这样一个聊天服务器就已经搭建好了。

二、进行群组聊天

单聊这里就不介绍了,着重介绍群聊的功能怎么实现。

群聊首先得先创建房间:

如果要快速创建的话可以直接在openfire的分组聊天里面创建:




这样一个聊天房间就会被创建好了,当然实际开发中肯定要通过代码来创建,代码创建房间:

/**创建一个房间*/

- (void)creatRoomWithName:(NSString *)roomName withTitle:(NSString *)roomTitle withNickName:(NSString *)roomNickName

{

   NSString *roomJid = [NSStringstringWithFormat:@"%@@conference.%@",roomName,kXMPP_Domain];

   NSLog(@"聊天房间id roomJid : %@", roomJid);

    

   _xmppRoom = [[XMPPRoomalloc]initWithRoomStorage:_storagejid:[XMPPJIDjidWithString:roomJid] dispatchQueue:dispatch_get_main_queue()];

    [_xmppRoomactivate:_xmppStream];

    [_xmppRoomjoinRoomUsingNickname:roomNickNamehistory:nil];

    [_xmppRoomaddDelegate:selfdelegateQueue:dispatch_get_main_queue()];

    [_xmppRoomfetchConfigurationForm];

   /**配置房间*/

    [selfconfigNewRoom];

}

/**配置房间信息*/

-(void)configNewRoom{

    NSXMLElement *x = [NSXMLElementelementWithName:@"x"xmlns:@"jabber:x:data"];

    NSXMLElement *p;

    p = [NSXMLElementelementWithName:@"field" ];

    [paddAttributeWithName:@"var"stringValue:@"muc#roomconfig_persistentroom"];//永久房间

    [paddChild:[NSXMLElementelementWithName:@"value"stringValue:@"1"]];

    [xaddChild:p];

    

    p = [NSXMLElementelementWithName:@"field" ];

    [paddAttributeWithName:@"var"stringValue:@"muc#roomconfig_maxusers"];//最大用户

    [paddChild:[NSXMLElementelementWithName:@"value"stringValue:@"10000"]];

    [xaddChild:p];

    

    p = [NSXMLElementelementWithName:@"field" ];

    [paddAttributeWithName:@"var"stringValue:@"muc#roomconfig_changesubject"];//允许改变主题

    [paddChild:[NSXMLElementelementWithName:@"value"stringValue:@"1"]];

    [xaddChild:p];

    

    p = [NSXMLElementelementWithName:@"field" ];

    [paddAttributeWithName:@"var"stringValue:@"muc#roomconfig_publicroom"];//公共房间

    [paddChild:[NSXMLElementelementWithName:@"value"stringValue:@"1"]];

    [xaddChild:p];

    

    p = [NSXMLElementelementWithName:@"field" ];

    [paddAttributeWithName:@"var"stringValue:@"muc#roomconfig_allowinvites"];//允许邀请

    [paddChild:[NSXMLElementelementWithName:@"value"stringValue:@"1"]];

    [xaddChild:p];

    

    [_xmppRoomconfigureRoomUsingOptions:x];

}

参考代码:

https://github.com/adow/Dollarss  

此代码是开源代码里面聊天的代码都有我就是看到这里才实现的,当然我的项目只要实现一些群聊的就可以了没有多少界面,代码里面牵涉到xmpp的注册登录的过程这个地方很关键下面我着重说明一下,在这里我也是遇到很多问题写出来少走弯路。

xmpp登录:

#pragma connect login and register

-(void)signinWithUsername:(NSString *)username

                  password:(NSString *)password

                      host:(NSString *)host

                isregister:(BOOL)isregister {

    self.username=username;

    self.password=password;

    self.host=host;

    if (![_xmppStreamisDisconnected]){

        return;

    }

    _registerAction=isregister;

    //    self.username=@"adow@shintekimacbook-pro.local";

    //    self.password=@"cloudq";

    //    NSString* domain=@"shintekimacbook-pro.local";

    self.jid=[NSStringstringWithFormat:@"%@@%@",self.username,self.host];

    [_xmppStreamsetMyJID:[XMPPJIDjidWithString:_jidresource:@"drrr"]];

    [_xmppStreamsetHostName:host];

    NSError *error =nil;

    BOOL result=[_xmppStreamconnectWithTimeout:3.0ferror:&error];

    NSLog(@"connect:%d,%@",result,error);

    [[NSUserDefaultsstandardUserDefaults]setObject:DRRRManager_StoreKey_UsernameforKey:username];

    [[NSUserDefaultsstandardUserDefaults]setObject:DRRRManager_StoreKey_PasswordforKey:password];

    [[NSUserDefaultsstandardUserDefaults]setObject:DRRRManager_StoreKey_HostforKey:host];

    [[NSUserDefaultsstandardUserDefaultssynchronize];

}

username 是注册时候的用户名

password  是注册时候的密码

host            是服务器的名称  比如我这里是 chat.itutu.tv

setHostName  最关键的 这里要服务器的ip地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值