在現階段的通信服務中,各種標準都有,因此會出現無法實現相互連通,而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)
新聞熱點
疑難解答