首页 > 代码库 > XMPP登录注册好友群组_实战教学1
XMPP登录注册好友群组_实战教学1
1. 环境准备:openfire + mysql 5.1.6 + Xcode5 + XMPP.Framework (至于环境的配置, 请自己百度, 推荐: http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html)
2. cocoapods
1 platform :ios, ‘7.0‘2 pod "XMPPFramework", "~>3.6.4"
3.工程: ARC + COREDATA + XIB(Storyboard)
4.直奔重点: XMPP工具单例
1. 首先, 创建一个Infromation.h 文件 用来存放我们需要的一些基本信息,比如host之类的。 然后把这个头文件导入pch文件中 注意我的Domains 后边多一个@
1 #ifndef ADXMPP_BE_Information_h2 #define ADXMPP_BE_Information_h3 4 #define SERVER @"127.0.0.1"5 #define DOMAINS @"@127.0.0.1"6 7 #endif
2. 创建ADXMPPConn 类、 开始编辑我们的XMPP连接、 登录、 注册核心代码
ADXMPPConn.h
1 // 2 // ADXMPPConn.h 3 // ADXMPP_BE 4 // 5 // Created by Dylan on 14-10-8. 6 // Copyright (c) 2014年 Dylan. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>10 #import <XMPP.h>11 12 /**13 用来判断当前用户在进行什么操作14 */15 typedef enum {16 LOGIN,17 REGISTER18 }USER_TYPE;19 20 /*!21 * @Author Dylan.22 *23 * Callbacl Block24 */25 typedef void(^connectSuccess)();26 typedef void(^AuthenticateFailure)(id);27 28 typedef void(^registerSuccess)();29 typedef void(^registerFailure)(id);30 31 @interface ADXMPPConn : NSObject <XMPPStreamDelegate>32 33 /*!34 * @Author Dylan.35 *36 * xmppStream37 */38 @property (nonatomic, strong) XMPPStream * xmppStream;39 40 /*!41 * @Author Dylan.42 *43 * Username, Password44 */45 @property (nonatomic, strong) NSString * userName;46 @property (nonatomic, strong) NSString * passWord;47 48 /*!49 * @Author Dylan. UserType50 */51 @property (nonatomic) USER_TYPE USERTYPE;52 53 /*!54 * @Author Dylan.55 *56 * Methods57 */58 #pragma mark - Methods59 60 /*!61 * shareInstance62 */63 + (instancetype)shareInstance;64 65 /*!66 * setup xmppStream67 */68 - (void) setupXmppStream;69 70 /*!71 * on/off line72 */73 - (void) online;74 - (void) offline;75 76 /*!77 * connection/register78 */79 - (BOOL)connectionWithUserName: (NSString *)userName80 passWord: (NSString *)passWord81 success: (connectSuccess)Success82 failure: (AuthenticateFailure)Failure;83 84 - (void)registerWithUserName: (NSString *)userName85 passWord: (NSString *)passWord86 success: (registerSuccess)Success87 failure: (registerFailure)Failure;88 89 @end
ADXMPPConn.m
1 // 2 // ADXMPPConn.m 3 // ADXMPP_BE 4 // 5 // Created by Dylan on 14-10-8. 6 // Copyright (c) 2014年 Dylan. All rights reserved. 7 // 8 9 #import "ADXMPPConn.h" 10 11 @interface ADXMPPConn () 12 13 /*! 14 * @Author Dylan. 15 * 16 * Callback Block 17 */ 18 @property (nonatomic, copy) connectSuccess connSuccess; 19 @property (nonatomic, copy) AuthenticateFailure authenFailure; 20 21 @property (nonatomic, copy) registerSuccess regisSuccess; 22 @property (nonatomic, copy) registerFailure regisFailure; 23 24 @end 25 26 // shareInstance 27 static ADXMPPConn * xmppConn; 28 29 @implementation ADXMPPConn 30 31 #pragma mark shareInstance 32 + (instancetype)shareInstance { 33 static dispatch_once_t onceToken; 34 dispatch_once(&onceToken, ^{ 35 xmppConn = [[self alloc] init]; 36 }); 37 38 return xmppConn; 39 } 40 41 #pragma mark - Methods 42 - (void)setupXmppStream { 43 self.xmppStream = [[XMPPStream alloc] init]; 44 [_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; 45 } 46 47 #pragma mark on/off line 48 - (void)online { 49 XMPPPresence * presence = [XMPPPresence presence]; 50 [self.xmppStream sendElement:presence]; 51 } 52 53 - (void)offline { 54 XMPPPresence * presence = [XMPPPresence presenceWithType:@"unavailable"]; 55 [self.xmppStream sendElement:presence]; 56 [self.xmppStream disconnect]; 57 } 58 59 #pragma mark connection 60 - (BOOL)connectionWithUserName:(NSString *)userName passWord:(NSString *)passWord success:(connectSuccess)Success failure:(AuthenticateFailure)Failure { 61 62 // setup xmppStream 63 [self setupXmppStream]; 64 65 // get username, password 66 self.userName = userName; 67 self.passWord = passWord; 68 69 // set callback block 70 self.connSuccess = Success; 71 self.authenFailure = Failure; 72 73 if ([self.xmppStream isConnected]) { 74 return YES; 75 } 76 77 if (userName == nil) { 78 return NO; 79 } 80 81 // setJID 82 [self.xmppStream setMyJID:[XMPPJID jidWithString:userName]]; 83 [self.xmppStream setHostName:SERVER]; 84 85 NSError * error = nil; 86 if (![self.xmppStream connectWithTimeout:30 error:&error]) { 87 NSLog(@"%@", [error localizedDescription]); 88 Failure(error); 89 return NO; 90 } 91 92 return YES; 93 } 94 95 - (void)registerWithUserName:(NSString *)userName passWord:(NSString *)passWord success:(registerSuccess)Success failure:(registerFailure)Failure { 96 97 // set user type 98 self.USERTYPE = REGISTER; 99 100 // set username, password101 self.userName = [userName stringByAppendingString:DOMAINS];102 self.passWord = passWord;103 104 self.regisSuccess = Success;105 self.regisFailure = Failure;106 107 [self connectionWithUserName:self.userName passWord:passWord success:Success failure:Failure];108 }109 110 #pragma mark - delegateMethods111 - (void)xmppStreamDidConnect:(XMPPStream *)sender {112 self.connSuccess();113 114 NSError * error = nil;115 116 // kind of user type117 if (self.USERTYPE == REGISTER) {118 119 // registe120 [self.xmppStream setMyJID:[XMPPJID jidWithString:self.userName]];121 NSError * error = nil;122 if (![self.xmppStream registerWithPassword:self.passWord error:&error]) {123 self.regisFailure([error localizedDescription]);124 }125 126 } else {127 // authenticate128 [self.xmppStream authenticateWithPassword:self.passWord error:&error];129 if (error != nil) {130 self.authenFailure([error localizedDescription]);131 }132 }133 }134 135 // dis connect136 - (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error {137 NSLog(@"%@", [error localizedDescription]);138 }139 140 // authenticate141 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error {142 self.authenFailure(error);143 }144 145 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {146 // online147 [self online];148 self.connSuccess();149 }150 151 // regist152 - (void)xmppStreamDidRegister:(XMPPStream *)sender {153 self.regisSuccess();154 }155 156 - (void)xmppStream:(XMPPStream *)sender didNotRegister:(DDXMLElement *)error {157 self.regisFailure(error);158 }159 160 @end
登录注册。 每日更新中。
XMPP登录注册好友群组_实战教学1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。