ios xmpp+openfire 群聊
2015-10-08 16:19
381 查看
最近在做直播的项目里面用的的群聊的功能,规定是要用xmpp+openfire。以前也没做过通过网上找资料最终还是把这部分功能实现了,只是简单的群聊天功能,当然这里我也只是把网上找到的东西分享给大家而已想学习的可以看一下。要实现群聊得有以下几个步骤:
一、安装openfire
这部分不详细说明,网上大把的资料,根据教程安装好就是了。当openfire安装好了后肯定会看到这样的界面:
这样一个聊天服务器就已经搭建好了。
二、进行群组聊天
单聊这里就不介绍了,着重介绍群聊的功能怎么实现。
群聊首先得先创建房间:
如果要快速创建的话可以直接在openfire的分组聊天里面创建:
这样一个聊天房间就会被创建好了,当然实际开发中肯定要通过代码来创建,代码创建房间:
/**创建一个房间*/
/**配置房间信息*/
参考代码: https://github.com/adow/Dollarss
此代码是开源代码里面聊天的代码都有我就是看到这里才实现的,当然我的项目只要实现一些群聊的就可以了没有多少界面,代码里面牵涉到xmpp的注册登录的过程这个地方很关键下面我着重说明一下,在这里我也是遇到很多问题写出来少走弯路。
xmpp登录:
username 是注册时候的用户名
password 是注册时候的密码
host
是服务器的名称 比如我这里是 chat.itutu.tv
setHostName 最关键的 这里要服务器的ip地址
登录聊天服务器后接下来就是聊天房间此代码里面都有源码。这些就是我对群聊的理解,把我知道的分享给大家,如有什么问题可以留言。
一、安装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]; [[NSUserDefaultsstandardUserDefaults]synchronize]; }
username 是注册时候的用户名
password 是注册时候的密码
host
是服务器的名称 比如我这里是 chat.itutu.tv
setHostName 最关键的 这里要服务器的ip地址
登录聊天服务器后接下来就是聊天房间此代码里面都有源码。这些就是我对群聊的理解,把我知道的分享给大家,如有什么问题可以留言。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- 基于UIControl控件实现ios点赞功能
- iOS开发中实现邮件和短信发送的简单示例