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

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   ar   使用   

  你看今天是(三)對吧,前面肯定有(一)和(二),在發表完iOS開發之使用XMPPFramework實現即時通訊(一)和iOS開發之使用XMPPFramework實現即時通訊(二)後有好多的小夥伴加我Q或者評論留言提出一些問題,比如:“樓主,在哪註冊?”,“樓主,你的登入使用者名稱和密碼是多少?”之類的問題。在之前的部落格中使用的帳號和密碼,為了方便,是用spark用戶端註冊的,在今天的部落格中將會詳細的介紹如何使用代碼註冊我們新使用者,還有在這感謝關注我的小夥伴們,謝謝你們的支援!

  好了,廢話少說,說道到註冊新的使用者其實還是蠻簡單的,之前在使用xmppframework的時候是直接連接後就直接認證。今天的部落格的大體思路是讓使用者輸入使用者名稱和密碼,我們拿著使用者名稱取串連我們的openfire伺服器(即使使用者沒有註冊,拼接出的jid也能串連伺服器)。串連完以後這不同的是去註冊密碼而不是去認證,註冊成功後,然後再認證。

  一,運行展示

    還是那句話,為了直觀,是少不了圖的,啟動並執行部分如下:

 

  二.代碼展示

    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. 並註冊委託回調

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.點擊註冊按鈕,然後調取串連方法,串連方法中用到的使用者名稱是使用者自己輸入的

 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.實現串連成功後回調的方法,在本方法中註冊我們的使用者密碼,代碼如下:

 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.實現註冊成功後的回調方法,註冊成功後,認證密碼:

 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 }

 

  三、注意問題

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

 

  今天的部落格先到這兒,歡迎批評指正~

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.