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. nRF52832之硬件I2C

    这几天一直在折腾nRF52832的硬件I2C,到了今天最终出现了成果,在此也印证了那句话:"耕耘就有收获" 52832的硬件I2C尽管官方提供了demo,可是自己对I2C通信理解的 ...

  2. ZOJ3659 Conquer a New Region 并查集

    Conquer a New Region Time Limit: 5 Seconds      Memory Limit: 32768 KB The wheel of the history roll ...

  3. ZOJ 1414:Number Steps

    Number Steps Time Limit: 2 Seconds      Memory Limit: 65536 KB Starting from point (0,0) on a plane, ...

  4. BS与CS的联系与区别。

    C/S是Client/Server的缩写.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端需要安装专用的 ...

  5. 1998 NOIP 拼数 string 和sort的新理解

    题目:https://www.luogu.org/problemnew/show/P1012 今天真是长了见识.这道题做了十几分钟,用模拟愣是调不出来.直到我看了题解——(当场去世)…… 题的意思是n ...

  6. Eclipse导入Java 的jar包的方法

    打开eclipse1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择ja ...

  7. 微信小程序setData的使用,通过[...]进行动态key赋值

    首先先介绍一下微信小程序Page.prototype.setData(Object data, Function callback)的讲解: setData函数用于将数据从逻辑层发送到视图层(异步), ...

  8. 乐搏讲自动化测试-python语言特点及优缺点(5)

    相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然.在竞争日益激烈的市场环境中也是你升职加薪的利器. 所以,小编决定从今天起!将要系统.连续.高质量的持续更新「整套自动化测试」文章 ...

  9. 1.2打印ASCII码

    描述 输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码. 输入一个除空格以外的可见字符.输出一个十进制整数,即该字符的ASCII码.样例输入 A 样例 ...

  10. ACM_校庆素数

    校庆素数 Time Limit: 2000/1000ms (Java/Others) Problem Description: 广财建校33年了,如今迎来了她的校庆. 小财最近想在研究素数,她突发奇想 ...