原始地址:XMPPFrameWork IOS 開發(三)
XMPP中常用對象們:
XMPPStream:xmpp基礎服務類
XMPPRoster:好友名單類
XMPPRosterCoreDataStorage:好友名單(使用者帳號)在core data中的操作類
XMPPvCardCoreDataStorage:好友名片(暱稱,簽名,性別,年齡等資訊)在core data中的操作類
XMPPvCardTemp:好友名片實體類,從資料庫裡取出來的都是它
xmppvCardAvatarModule:好友頭像
XMPPReconnect:如果失去串連,自動重連
XMPPRoom:提供多使用者聊天支援
XMPPPubSub:發布訂閱
第一步 產生xmppstream對象 並且設定委託
-(void)setupStream{ //初始化XMPPStream xmppStream = [[XMPPStream alloc] init]; [xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()]; }
第二步 設定登陸帳戶名稱字與伺服器名字,並串連
-(BOOL)connect{ [self setupStream]; //從本地取得使用者名稱,密碼和伺服器位址 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *userId = [defaults stringForKey:USERID]; NSString *pass = [defaults stringForKey:PASS]; NSString *server = [defaults stringForKey:SERVER]; if (![xmppStream isDisconnected]) { return YES; } if (userId == nil || pass == nil) { return NO; } //設定使用者 [xmppStream setMyJID:[XMPPJID jidWithString:userId]]; //設定伺服器 [xmppStream setHostName:server]; //密碼 password = pass; //串連伺服器 NSError *error = nil; if (![xmppStream connect:&error]) { NSLog(@"cant connect %@", server); return NO; } return YES; }
串連伺服器
//啟動串連操作後,回呼函數(委託函數)- (void)xmppStreamWillConnect:(XMPPStream *)sender將被調用,表示將要串連- (void)xmppStreamDidConnect:(XMPPStream *)sender//登陸伺服器成功{ NSError *error = nil; //驗證帳戶密碼 NSString *password = @"test1"; BOOL bRes = [_xmppStream authenticateWithPassword:password error:&error];}
驗證帳號
//驗證成功的回呼函數- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender{ XMPPPresence *presence = [XMPPPresencepresence]; //可以加上上線狀態,比如忙碌,線上等 [[selfxmppStream] sendElement:presence];//發送上線通知}//驗證失敗的回調- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error