xmpp开发教程(三)-连接和认证

从这章节开始,我将手把手的操作如何实现聊天里面的一些基本功能,从容易向高难度的过渡,这也是我编写程序的基本方法。

这章我们要研究的是连接和认证两个操作。

首先献上代码

 1 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 2 #pragma mark Connect/disconnect
 3 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 4
 5 - (void)connect {
 6
 7     if (self.xmppStream == nil) {
 8         self.xmppStream = [[XMPPStream alloc] init];
 9         [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
10
11         xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init];
12         //    xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] initWithInMemoryStore];
13
14         xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:xmppRosterStorage];
15
16         xmppRoster.autoFetchRoster = YES;
17         xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES;
18         [xmppRoster            activate:xmppStream];
19         [xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()];
20     }
21
22
23     if (![self.xmppStream isConnected]) {
24
25        NSString *[email protected]"[email protected]";
26        NSString *[email protected]"***********";
27        NSString *[email protected]"helloworldtekimac-mini.local";
28
29         //设置用户
30        [xmppStream setMyJID:[XMPPJID jidWithString:userId]];
31         //设置服务器
32        [xmppStream setHostName:server];
33         //密码
34        password = pass;
35
36         NSError *error = nil;
37         NSTimeInterval timeInter=15;
38         if (![self.xmppStream connectWithTimeout:timeInter error:&error]){
39             NSLog(@"Connect Error: %@", [[error userInfo] description]);
40         }
41     }
42 }

第8,9行是初始化xmppStream对象并且设置delegate,保证后边能回调相应的函数。

第14~19行是初始化xmppRoster对象并且设置存储方式,自动检索数据,delegate,与前边的xmppStream相关联。

第25~39行是连接服务器

userId是登录的用户名,pass是密码,server是服务器域名
connectWithTimeout是最新的连接方法,之前用的是connect,不过已经废弃了。

如果一切顺利,会回调相应的方法
1 - (void)xmppStreamDidConnect:(XMPPStream *)sender {
2    // NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
3     NSError *error = nil;
4     if (![self.xmppStream authenticateWithPassword:password error:&error]) {
5         NSLog(@"Authenticate Error: %@", [[error userInfo] description]);
6     }
7 }

第4行表示回调成功后会验证密码,会进入到下面的方法

 1 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 2 #pragma mark Authenticate
 3 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 4
 5 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {
 6     [self goOnline];
 7 }
 8
 9 -(void)goOnline
10 {
11     XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];
12     [self.xmppStream sendElement:presence];
13 }
14
15 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
16 {
17     NSLog(@"Authenticate Error: %@", error);
18 }
 -(void)goOnline的方法主要是想服务器发送一个上线的通知

我们运行程序,设置断点,跟踪路径,可以根据服务器页面来判断用户是否上线


这就说明登录和验证都是成功的,下章节会介绍如何获取好友列表。
 
时间: 2024-12-29 12:04:43

xmpp开发教程(三)-连接和认证的相关文章

微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台

原文:微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 公众号第三方平台的开放,是为了让公众号运营者,在面向垂直行业需求时,可以一键登录授权给第三方的公众号运营平台,通过第三方开发者提供的公众号第三

xmpp开发教程(一)-服务器搭建

最近看了关于XMPP的框架,以文本聊天为例,需要发送的消息为: [html] view plaincopy <message type="chat" from="[email protected]" to="[email protected]"> <body>helloWord</body> </message> 基中from是从哪个用户发送的消息,to是发给谁的消息,XMPP的用户都是以邮箱形式.

xmpp开发教程(六)-添加和删除好友

这章开发添加和删除好友的模块,首先列出里面主要的方法: 1 [_xmppRoster fetchRoster];//获取好友列表 2 3 //获取到一个好友节点 4 - (void)xmppRoster:(XMPPRoster *)sender didRecieveRosterItem:(NSXMLElement *)item 5 6 //获取完好友列表 7 - (void)xmppRosterDidEndPopulating:(XMPPRoster *)sender 8 9 //到服务器上请求

XAF应用开发教程(三)业务对象模型之引用类型与关联关系

本节介绍信息系统开发中最常见的问题,引用关系,一对多关系,多对多关系. 以客户信息为例,客户通常需要客户分类,如VIP客户,普通客户,潜在客户.当然,我们可以定义枚举类型进行定义出这个类型,并在客户类上面定义对应的属性. 但枚举类型增加值需要修改程序,而客户分类很可能是会增加或是修改的,此时,我们就需要用到了引用类型.引用类型对应到数据库上,也就是外键关系. 既然是需要可以维护的客户分类,那么我们应该建立一张表出来,在XPO中就要新建出一个业务类,代码如下: [DefaultClassOptio

xmpp开发教程(四)-获取好友列表

这章节主要是介绍如何获取好友列表,在这里主要是做功能部分,后续更新的时候就将界面也做上去 首先提供下核心代码 1 xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init]; 2 // xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] initWithInMemoryStore]; 3 4 xmppRoster = [[XMPPRoster alloc] initWithRo

公众号第三方平台开发 教程三 微信公众号授权第三方平台

这一部分挺简单的,其实就是在页面上放一个链接,引导用户跳转即可 链接的格式如下: https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx, 这里对参数做一下说明 component_appid即第三方平台的APPID(如下图) pre_auth_code为预授权码,用获得的第三方平台AccessToken作为参数进行获取,具体

微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码

教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码 由于最近比较忙,这个教程没有连续上,我会尽量连载.书节上回,上次我介绍了代公众号调用接口的方法和SDK的使用.不少朋友也都加了QQ群(2489462

Android OpenGL ES 开发教程 从入门到精通

From:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ES 简明开发教程一:概述 Android OpenGL ES 简明开发教程二:构造OpenGL ES View Android OpenGL ES 简明开发教程三:3D绘图基本概念 Android OpenGL ES 简明开发教程四:3D 坐标变换 Android OpenGL ES 简明开发教程五

微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 前几章中我讲解了微信开发平台提供第三方平台的好处,和使用流程,如果你看了我的文章相信你对开放平台有了初步的了解,但是在实际的开发过程