XMPP中常用对象们:

XMPPStream:xmpp基础服务类

XMPPRoster:好友列表类

XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类

XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类

XMPPvCardTemp:好友名片实体类,从数据库里取出来的都是它

xmppvCardAvatarModule:好友头像

XMPPReconnect:如果失去连接,自动重连

XMPPRoom:提供多用户聊天支持

XMPPPubSub:发布订阅

第一步 生成xmppstream对象 并且设置委托

  1. -(void)setupStream{
  2. //初始化XMPPStream
  3. xmppStream = [[XMPPStream alloc] init];
  4. [xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];
  5. }

第二步 设置登陆帐户名字与服务器名字,并连接

  1. -(BOOL)connect{
  2. [self setupStream];
  3. //从本地取得用户名,密码和服务器地址
  4. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  5. NSString *userId = [defaults stringForKey:USERID];
  6. NSString *pass = [defaults stringForKey:PASS];
  7. NSString *server = [defaults stringForKey:SERVER];
  8. if (![xmppStream isDisconnected]) {
  9. return YES;
  10. }
  11. if (userId == nil || pass == nil) {
  12. return NO;
  13. }
  14. //设置用户
  15. [xmppStream setMyJID:[XMPPJID jidWithString:userId]];
  16. //设置服务器
  17. [xmppStream setHostName:server];
  18. //密码
  19. password = pass;
  20. //连接服务器
  21. NSError *error = nil;
  22. if (![xmppStream connect:&error]) {
  23. NSLog(@"cant connect %@", server);
  24. return NO;
  25. }
  26. return YES;
  27. }

连接服务器

  1. //启动连接操作后,回调函数(委托函数)
  2. - (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接
  3. - (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功
  4. NSError *error = nil;
  5. //验证帐户密码
  6. NSString *password = @"test1";
  7. BOOL bRes =  [_xmppStream authenticateWithPassword:password error:&error];
  8. }

验证账号

  1. //验证成功的回调函数
  2. - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
  3. {
  4. XMPPPresence *presence = [XMPPPresencepresence];
  5. //可以加上上线状态,比如忙碌,在线等
  6. [[selfxmppStream] sendElement:presence];//发送上线通知
  7. }
  8. //验证失败的回调
  9. - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error

xmpp登录(2)的更多相关文章

  1. openfire xmpp 登录参数解析

    1.openfire xmpp登录 boolean result = false; ConnectionConfiguration config = new ConnectionConfigurati ...

  2. UI进阶 即时通讯之XMPP登录、注册

    1.XMPP环境搭建 http://www.cnblogs.com/fearlessyyp/p/5506644.html 第一次打开可能会有点儿慢,图片很多,步骤很详细,祝搭建成功. 2.工程中添加X ...

  3. xmpp 登录注册小结

    将XMPPStream放在APPDelegate,以便全局访问 #pragma mark - XMPP相关的属性和方法定义 /** * 全局xmppstream,只读属性 */ @property ( ...

  4. XMPP登录应用

    一.导入框架 1.XMMP框架,写入头文件,设置XMPPStreamDelegate代理,定义 XMPPStream *_xmppStream; 2.libresolv.dylib 3.libxml2 ...

  5. xmppmini 项目详解:一步一步从原理跟我学实用 xmpp 技术开发 2.登录的实现

    第二章登录的实现 金庸<倚天屠龙记> 张三丰缓缓摇头,说道:“少林派累积千年,方得达成这等绝技,决非一蹴而至,就算是绝顶聪明之人,也无法自创.”他顿了一顿,又道:“我当年在少林寺中住过,只 ...

  6. XMPP实现登陆注销功能

    XMPP框架的下载与导入等问题请参照 —— XMPP框架的分析.导入及问题解决 DEMO ——XMPP即时通讯(已导入框架)密码:3a7n 这篇我们利用XMPP框架来实现一下登陆功能,先来介绍一下XM ...

  7. UI进阶 即时通讯之XMPP好友列表、添加好友、获取会话内容、简单聊天

    这篇博客的代码是直接在上篇博客的基础上增加的,先给出部分代码,最后会给出能实现简单功能的完整代码. UI进阶 即时通讯之XMPP登录.注册 1.好友列表 初始化好友花名册 #pragma mark - ...

  8. XMPP开发之从零開始

    对于server的搭建和设置.我在这里就不再多说了.有好多前辈已经帮大家攻克了.能够參考下这篇博客 XMPPserver配置 我依照这个博客配置好了,server后,然后在网上參照代码写了一个小的de ...

  9. XMPP详解

    https://www.jianshu.com/p/84d15683b61e https://www.cnblogs.com/lurenq/p/7026983.html 1. xmpp简介 XMPP ...

随机推荐

  1. Msql入门实战之下

    前面一章主要解说了mysql的select的使用方法.将select的大部分使用方法进行分别解说.本章主要解说Msql约束表的建立,以及存储过程的实现,附带其它介绍.临时就算入门了,Mysql索引之后 ...

  2. HDU4267 树状数组 不连续区间修改(三维)

    A Simple Problem with Integers                                  Problem Description Let A1, A2, ... ...

  3. GuiLite 1.2 发布(希望通过这100+行代码来揭示:GuiLite的初始化,界面元素Layout,及消息映射的过程)

    经过开发群的长期验证,我们发现:即使代码只有5千多行,也不意味着能够轻松弄懂代码意图.痛定思痛,我们发现:虽然每个函数都很简单(平均长度约为30行),可以逐个击破:但各个函数之间如何协作,却很难说明清 ...

  4. python安装了2.7之后终端无法使用退格,上下左右

    遇到RT问题,原因是由于在编译python的时候去烧readline库造成的 解决办法: yum install readline-devel 然后重新编译安装python,终端控制符可用!

  5. Codesys——AD_DA在PID控制中的作用

    1. 摘要 PID控制中用到AD/DA的输入/输出,给出其大致实现思路. 2. 思路 3. 总结 无

  6. 安装Node.js 以及命令行使用

    安装 官方的安装包 安装完成之后,会自动添加到环境变量中 通过visual studio安装 命令行 查看版本 PS C:\Users\clu\Desktop> node --version v ...

  7. xargs 主要用于不支持管道的shell命令*****

    变量置换,主要用于不支持管道的shell命令,如:rm.sed等,但有些命令需要占位符“{}”需要注意.比如:删除文件- ls|xargs -i rm -rf {} 文件改名-   ls|xargs ...

  8. 5. extjs 中buttonAlign什么意思

    转自:https://zhidao.baidu.com/question/1174901985976576339.html指定Panel中按钮的位置.可配置的值有'right', 'left' 和 ' ...

  9. LaTex简历排版

    为了写好简历,倒腾了好几天的Latex,主要是因为中文支持问题还有morderncv的更新问题... 1.  http://www.ctex.org/CTeXDownload/ 建议下载v2.9.2. ...

  10. bzoj4720: [Noip2016]换教室(期望dp)

    4720: [Noip2016]换教室 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1294  Solved: 698[Submit][Status ...