XMPP使用简单介绍--登录

  在现阶段的通信服务中,各种标准都有。因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互通。有了这个协议之后。使用不论什么一个组织或者个人提供的即使通信服务,都可以无障碍的与其它的及时通信服务的用户进行交流。

比如google 公司2005年推出的Google talk就是一款基于XMPP协议的即时通信软件。以下我们就谈论一下怎样简单的使用XMPP

 一、环境的搭建。本文採用的是openFire server

  1、下载最新openfire for mac版 http://www.igniterealtime.org/downloads/index.jsp

  2、点击以下图标进行安装JDK 和server

 

  3、启动后,点击Open Admin Consolebutton,自己主动在浏览器中打开本地web配置页面http://localhost:9090/setup/index.jsp然后进行server配置

  4、将语言设置为中文就可以

 

  5、设置server地址为本机

  6、设置数据库

 

  在运行此步骤之前须要做一些准备工作。

1创建数据库 :create database openfire;
2导入openfire资源目录 resources/database下的数据表:source /usr/local/openfire/resources/database/openfire_mysql.sql
7、特性设置

  8、设置openfireserver管理员的帐号和password

  9、安装完毕。点击button登录

  登录后界面例如以下

  10、依照上面操作创建用户password

  11、此时的准备工作基本完毕

 二 导入XMPP

  1、将XMPP所有导入project

 

  2、导入依赖包

 

  因为动态库的存在因此须要做下面操作

 

 三、到眼下为止我们的XMPP成功导入到项目中,以下我们開始编码实现用户登录

  1、在代理里面引入包。而且定义流属性

 

  2、初始化而且加入代理

#pragma mark 初始化
- (void)setUpStream{
    
    if (_stream==nil) {
        
        //1 初始化stream
        _stream=[[XMPPStream alloc] init];
        
        //2 加入代理
        [_stream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
        
    }
    
}

  3、建立连接

#pragma mark 建立链接
//建立连接
- (void) connect{
    
    //1 初始化
    [self setUpStream];
    
    //2 制定server地址,username,password
    NSString * userName=@"jereh@jereh.local";
    NSString * hostName=@"jereh.local";
    
    //3 设置JID和主机
    XMPPJID * jid=[XMPPJID jidWithString:userName];
    
    [self.stream setMyJID:jid];
    [self.stream setHostName:hostName];
    
    //4 開始连接
    NSError * error;
    [self.stream connectWithTimeout:XMPPStreamTimeoutNone error:&error];
    
    if (error) {
        NSLog(@"发送连接请求失败");
    }else{
        NSLog(@"发送连接请求成功");
    }
    
}

  5、进行password验证,通过代理方法返回结果

#pragma mark 验证身份请求
-(void)xmppStreamDidConnect:(XMPPStream *)sender{

    NSLog(@"链接成功");
    
    //发送身份验证请求
    NSString * pwd=@"jereh123";
    [self.stream authenticateWithPassword:pwd error:nil];
}

#pragma mark password正确
- (void) xmppStreamDidAuthenticate:(XMPPStream *)sender{

    NSLog(@"身份验证成功");
    
    //通知server上线
    [self onLine];
}

#pragma mark password错误
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error{
    
    NSLog(@"身份验证失败");
}

  6、開始连接

  想要了解很多其它内容的小伙伴。能够点击查看源代码,亲自执行測试。

  疑问咨询或技术交流。请增加官方QQ群:JRedu技术交流 (452379712)

作者:杰瑞教育
出处:http://blog.csdn.net/jerehedu/ 
本文版权归烟台杰瑞教育科技有限公司和博客园共同拥有。欢迎转载,但未经作者允许必须保留此段声明。且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
 
原文地址:https://www.cnblogs.com/yutingliuyl/p/7053672.html