在現階段的通信服務中,各種標准都有,因此會出現無法實現相互連通,而XMPP(Extensible Message and presence Protocol)協議的出現,實現了整個及時通信服務協議的互通。有了這個協議之后,使用任何一個組織或者個人提供的即使通信服務,都能夠無障礙的與其他的及時通信服務的用戶進行交流。例如google 公司2005年推出的Google talk就是一款基於XMPP協議的即時通信軟件。下面我們就談論一下如何簡單的使用XMPP
一、環境的搭建,本文采用的是openFire 服務器 |
1、下載最新openfire for mac版 http://www.igniterealtime.org/downloads/index.jsp
2、點擊下面圖標進行安裝JDK 和服務器
3、啟動后,點擊Open Admin Console按鈕,自動在瀏覽器中打開本地web配置頁面http://localhost:9090/setup/index.jsp然后進行服務器配置
4、將語言設置為中文即可
5、設置服務器地址為本機
6、設置數據庫
在執行此步驟之前需要做一些准備工作,
1創建數據庫 :create database openfire;2導入openfire資源文件夾 resources/database下的數據表:source /usr/local/openfire/resources/database/openfire_mysql.sql
7、特性設置
8、設置openfire服務器管理員的帳號和密碼
9、安裝完成,點擊按鈕登錄
登錄后界面如下
10、按照上面操作創建用戶密碼
11、此時的准備工作基本完成
二 導入XMPP |
1、將XMPP全部導入工程
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 制定服務器地址,用戶名,密碼 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、進行密碼驗證,通過代理方法返回結果
#pragma mark 驗證身份請求 -(void)xmppStreamDidConnect:(XMPPStream *)sender{ NSLog(@"鏈接成功"); //發送身份驗證請求 NSString * pwd=@"jereh123"; [self.stream authenticateWithPassword:pwd error:nil]; } #pragma mark 密碼正確 - (void) xmppStreamDidAuthenticate:(XMPPStream *)sender{ NSLog(@"身份驗證成功"); //通知服務器上線 [self onLine]; } #pragma mark 密碼錯誤 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error{ NSLog(@"身份驗證失敗"); }
6、開始連接
想要了解更多內容的小伙伴,可以點擊查看源碼,親自運行測試。
疑問咨詢或技術交流,請加入官方QQ群: (452379712)
出處: http://www.cnblogs.com/jerehedu/
本文版權歸煙台傑瑞教育科技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。