XMPP iOS客户端实现三:登录、注册
生活随笔
收集整理的這篇文章主要介紹了
XMPP iOS客户端实现三:登录、注册
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.創(chuàng)建一個(gè)單例模式來(lái)管理xmpp的連接和操作
1 +(XMPPManager *)share 2 { 3 static XMPPManager *_share=nil; 4 static dispatch_once_t onceToken; 5 dispatch_once(&onceToken, ^{ 6 _share=[[XMPPManager alloc] init]; 7 }); 8 return _share; 9 } 10 -(id)init 11 { 12 if (self=[super init]) { 13 [self setupStream]; 14 } 15 return self; 16 } 17 - (void)setupStream 18 { 19 xmppStream = [[XMPPStream alloc] init]; 20 [xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; 21 [xmppStream setHostName:@"127.0.0.1"]; 22 [xmppStream setHostPort:5222]; 23 }?2.登錄和注冊(cè)都需要使用用戶名進(jìn)行連接服務(wù)器,
-(void)login {[self connect]; } -(void)reg {isReg=YES;[self connect]; } - (BOOL)connect {if (xmppStream.isConnected) {[self disconnect];}if (![xmppStream isDisconnected]) {return YES;}if (self.userName == nil) {return NO;}[xmppStream setMyJID:[XMPPJID jidWithString:self.userName]];NSError *error = nil;if (![xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error]){UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error connecting"message:@"See console for error details."delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertView show];return NO;}return YES; }3.在連接代理中判斷是登錄還是注冊(cè),發(fā)送不同命令
//成功連接服務(wù)器 - (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GCDAsyncSocket *)socket {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD); } //連接服務(wù)器失敗 - (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);} - (void)xmppStreamDidConnect:(XMPPStream *)sender {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);NSError *error = nil;if (isReg){if (![xmppStream registerWithPassword:self.pwd error:&error]){}}else{if (![xmppStream authenticateWithPassword:self.pwd error:&error]){}}}4.處理登錄或注冊(cè)代理函數(shù)
//登錄成功 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);[self goOnline];UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"登錄成功"message:@"登錄成功"delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertView show]; } //登錄失敗 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"密碼錯(cuò)誤"message:@"密碼錯(cuò)誤"delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertView show];} //注冊(cè)成功 - (void)xmppStreamDidRegister:(XMPPStream *)sender {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"注冊(cè)成功"message:@"注冊(cè)成功"delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertView show];isReg=NO; } //注冊(cè)失敗 - (void)xmppStream:(XMPPStream *)sender didNotRegister:(NSXMLElement *)error {DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);NSLog(@"%@",[[error elementForName:@"error"] stringValue]);UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"注冊(cè)失敗"message:@"注冊(cè)失敗"delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertView show];isReg=NO; }?
5.登錄或注冊(cè)的用戶名必須“username@主機(jī)名”這種格式
轉(zhuǎn)載請(qǐng)注明:http://www.cnblogs.com/bandy/p/3756492.html
轉(zhuǎn)載于:https://www.cnblogs.com/bandy/p/3756492.html
總結(jié)
以上是生活随笔為你收集整理的XMPP iOS客户端实现三:登录、注册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 集群服务器状态命令------rs.st
- 下一篇: 第三章、Data语意学