xmpp登录(2)
XMPP中常用对象们:
XMPPStream:xmpp基础服务类
XMPPRoster:好友列表类
XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类
XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类
XMPPvCardTemp:好友名片实体类,从数据库里取出来的都是它
xmppvCardAvatarModule:好友头像
XMPPReconnect:如果失去连接,自动重连
XMPPRoom:提供多用户聊天支持
XMPPPubSub:发布订阅
第一步 生成xmppstream对象 并且设置委托
- -(void)setupStream{
- //初始化XMPPStream
- xmppStream = [[XMPPStream alloc] init];
- [xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];
- }
第二步 设置登陆帐户名字与服务器名字,并连接
- -(BOOL)connect{
- [self setupStream];
- //从本地取得用户名,密码和服务器地址
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *userId = [defaults stringForKey:USERID];
- NSString *pass = [defaults stringForKey:PASS];
- NSString *server = [defaults stringForKey:SERVER];
- if (![xmppStream isDisconnected]) {
- return YES;
- }
- if (userId == nil || pass == nil) {
- return NO;
- }
- //设置用户
- [xmppStream setMyJID:[XMPPJID jidWithString:userId]];
- //设置服务器
- [xmppStream setHostName:server];
- //密码
- password = pass;
- //连接服务器
- NSError *error = nil;
- if (![xmppStream connect:&error]) {
- NSLog(@"cant connect %@", server);
- return NO;
- }
- return YES;
- }
连接服务器
- //启动连接操作后,回调函数(委托函数)
- - (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接
- - (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功
- {
- NSError *error = nil;
- //验证帐户密码
- NSString *password = @"test1";
- BOOL bRes = [_xmppStream authenticateWithPassword:password error:&error];
- }
验证账号
- //验证成功的回调函数
- - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
- {
- XMPPPresence *presence = [XMPPPresencepresence];
- //可以加上上线状态,比如忙碌,在线等
- [[selfxmppStream] sendElement:presence];//发送上线通知
- }
- //验证失败的回调
- - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
xmpp登录(2)的更多相关文章
- openfire xmpp 登录参数解析
1.openfire xmpp登录 boolean result = false; ConnectionConfiguration config = new ConnectionConfigurati ...
- UI进阶 即时通讯之XMPP登录、注册
1.XMPP环境搭建 http://www.cnblogs.com/fearlessyyp/p/5506644.html 第一次打开可能会有点儿慢,图片很多,步骤很详细,祝搭建成功. 2.工程中添加X ...
- xmpp 登录注册小结
将XMPPStream放在APPDelegate,以便全局访问 #pragma mark - XMPP相关的属性和方法定义 /** * 全局xmppstream,只读属性 */ @property ( ...
- XMPP登录应用
一.导入框架 1.XMMP框架,写入头文件,设置XMPPStreamDelegate代理,定义 XMPPStream *_xmppStream; 2.libresolv.dylib 3.libxml2 ...
- xmppmini 项目详解:一步一步从原理跟我学实用 xmpp 技术开发 2.登录的实现
第二章登录的实现 金庸<倚天屠龙记> 张三丰缓缓摇头,说道:“少林派累积千年,方得达成这等绝技,决非一蹴而至,就算是绝顶聪明之人,也无法自创.”他顿了一顿,又道:“我当年在少林寺中住过,只 ...
- XMPP实现登陆注销功能
XMPP框架的下载与导入等问题请参照 —— XMPP框架的分析.导入及问题解决 DEMO ——XMPP即时通讯(已导入框架)密码:3a7n 这篇我们利用XMPP框架来实现一下登陆功能,先来介绍一下XM ...
- UI进阶 即时通讯之XMPP好友列表、添加好友、获取会话内容、简单聊天
这篇博客的代码是直接在上篇博客的基础上增加的,先给出部分代码,最后会给出能实现简单功能的完整代码. UI进阶 即时通讯之XMPP登录.注册 1.好友列表 初始化好友花名册 #pragma mark - ...
- XMPP开发之从零開始
对于server的搭建和设置.我在这里就不再多说了.有好多前辈已经帮大家攻克了.能够參考下这篇博客 XMPPserver配置 我依照这个博客配置好了,server后,然后在网上參照代码写了一个小的de ...
- XMPP详解
https://www.jianshu.com/p/84d15683b61e https://www.cnblogs.com/lurenq/p/7026983.html 1. xmpp简介 XMPP ...
随机推荐
- Msql入门实战之下
前面一章主要解说了mysql的select的使用方法.将select的大部分使用方法进行分别解说.本章主要解说Msql约束表的建立,以及存储过程的实现,附带其它介绍.临时就算入门了,Mysql索引之后 ...
- HDU4267 树状数组 不连续区间修改(三维)
A Simple Problem with Integers Problem Description Let A1, A2, ... ...
- GuiLite 1.2 发布(希望通过这100+行代码来揭示:GuiLite的初始化,界面元素Layout,及消息映射的过程)
经过开发群的长期验证,我们发现:即使代码只有5千多行,也不意味着能够轻松弄懂代码意图.痛定思痛,我们发现:虽然每个函数都很简单(平均长度约为30行),可以逐个击破:但各个函数之间如何协作,却很难说明清 ...
- python安装了2.7之后终端无法使用退格,上下左右
遇到RT问题,原因是由于在编译python的时候去烧readline库造成的 解决办法: yum install readline-devel 然后重新编译安装python,终端控制符可用!
- Codesys——AD_DA在PID控制中的作用
1. 摘要 PID控制中用到AD/DA的输入/输出,给出其大致实现思路. 2. 思路 3. 总结 无
- 安装Node.js 以及命令行使用
安装 官方的安装包 安装完成之后,会自动添加到环境变量中 通过visual studio安装 命令行 查看版本 PS C:\Users\clu\Desktop> node --version v ...
- xargs 主要用于不支持管道的shell命令*****
变量置换,主要用于不支持管道的shell命令,如:rm.sed等,但有些命令需要占位符“{}”需要注意.比如:删除文件- ls|xargs -i rm -rf {} 文件改名- ls|xargs ...
- 5. extjs 中buttonAlign什么意思
转自:https://zhidao.baidu.com/question/1174901985976576339.html指定Panel中按钮的位置.可配置的值有'right', 'left' 和 ' ...
- LaTex简历排版
为了写好简历,倒腾了好几天的Latex,主要是因为中文支持问题还有morderncv的更新问题... 1. http://www.ctex.org/CTeXDownload/ 建议下载v2.9.2. ...
- bzoj4720: [Noip2016]换教室(期望dp)
4720: [Noip2016]换教室 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1294 Solved: 698[Submit][Status ...