iOS開發之使用XMPPFramework實現即時通訊(三)

iOS開發之使用XMPPFramework實現即時通訊(三)

  你看今天是(三)對吧,前面確定有(一)和(二),在發表完iOS開發之使用XMPPFramework實現即時通訊(一)iOS開發之使用XMPPFramework實現即時通訊(二)後有好多的小夥伴加我Q或者評論留言提出一些問題,好比:「樓主,在哪註冊?」,「樓主,你的登陸用戶名和密碼是多少?」之類的問題。在以前的博客中使用的帳號和密碼,爲了方便,是用spark客戶端註冊的,在今天的博客中將會詳細的介紹如何使用代碼註冊咱們新用戶,還有在這感謝關注個人小夥伴們,謝謝大家的支持!html

  好了,廢話少說,說道到註冊新的用戶其實仍是蠻簡單的,以前在使用xmppframework的時候是直接鏈接後就直接認證。今天的博客的大致思路是讓用戶輸入用戶名和密碼,咱們拿着用戶名取鏈接咱們的openfire服務器(即便用戶沒有註冊,拼接出的jid也能鏈接服務器)。鏈接完之後這不一樣的是去註冊密碼而不是去認證,註冊成功後,而後再認證。服務器

  一,運行效果圖展現app

    仍是那句話,爲了直觀,是少不了圖的,運行的部分截圖以下:dom

 

  二.代碼展現spa

    1.爲了提示,我把AlterView進行了簡單封裝,便於使用,代碼以下:線程

複製代碼

1 //提示框2 -(void)alterWithTip:(NSString *) tip3 {4     UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:tip delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];5     [alter show];6 }

複製代碼

 

    2.開始今天的主題,首先在咱們的Controller裏獲取xmppSteam. 並註冊委託回調code

複製代碼

1 - (void)viewDidLoad {2     [super viewDidLoad];3 4     UIApplication *application = [UIApplication sharedApplication];5     id delegate = [application delegate];6     _xmppStream = [delegate xmppStream];7     //在主線程中註冊回調8     [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];9 }

複製代碼

 

    3.點擊註冊按鈕,而後調取鏈接方法,鏈接方法中用到的用戶名是用戶本身輸入的htm

複製代碼

 1 //用用戶輸入的用戶名來建立鏈接 2 -(void) xmppConnect 3 { 4     NSString *userName = self.userNameTextField.text; 5      6     //建立JID 7     XMPPJID *jid = [XMPPJID jidWithUser:userName domain:MYDOMAIN resource:@"iPhone"]; 8      9     //把Jid添加到流10     [self.xmppStream setMyJID:jid];11     12     //鏈接服務器13     NSError *error = nil;14     [self.xmppStream connectWithTimeout:10 error:&error];15     if (error) {16         NSLog(@"鏈接錯誤%@",[error localizedDescription]);17     }18 }

複製代碼

 

    4.實現鏈接成功後回調的方法,在本方法中註冊咱們的用戶密碼,代碼以下:blog

複製代碼

 1 //鏈接成功後,註冊用戶 2 -(void)xmppStreamDidConnect:(XMPPStream *)sender 3 { 4      5     [self alterWithTip:@"openfire服務器已鏈接"]; 6      7     NSString *password = self.passwordTextField.text; 8      9     NSError *error = nil;10     [self.xmppStream registerWithPassword:password error:&error];11     if (error) {12         NSLog(@"註冊錯誤%@",[error localizedDescription]);13     }14 }

複製代碼

 

    5.實現註冊成功後的回調方法,註冊成功後,認證密碼:ip

複製代碼

 1 //註冊成功後,認證用戶密碼 2 -(void)xmppStreamDidRegister:(XMPPStream *)sender 3 { 4     [self alterWithTip:@"用戶註冊成功"]; 5      6     //註冊成功後認證用戶名和密碼 7     NSError *error = nil; 8     [self.xmppStream authenticateWithPassword:self.passwordTextField.text error:&error]; 9     if (error) {10         NSLog(@"認證錯誤%@",[error localizedDescription]);11     }12 }

複製代碼

 

    6.實現認證成功後的回調

1 //認證成功後的回調2 -(void)xmppStreamDidAuthenticate:(XMPPStream *)sender3 {4     [self alterWithTip:@"登錄成功"];5 }

 

    7.實現認證失敗後的回調

1 //認證失敗的回調2 -(void)xmppStream:sender didNotAuthenticate:(DDXMLElement *)error3 {4     [self alterWithTip:@"用戶名和密碼錯誤"];5 }

 

  3、注意問題

    若是你輸入的帳號是已經註冊過的帳號,會提示註冊失敗。

 

  今天的博客先到這兒,歡迎批評指正~

做者:青玉伏案
出處:http://www.cnblogs.com/ludashi/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。 若是文中有什麼錯誤,歡迎指出。以避免更多的人被誤導。 

相關文章
相關標籤/搜索