知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
XMPP客戶端開發(fā)
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):52
這篇記錄下我應(yīng)用XMPP實(shí)現(xiàn)上傳頭像的過程,發(fā)明XMPP真心很強(qiáng)大年夜很多功能都已經(jīng)實(shí)現(xiàn)了。我們只要直接調(diào)用就可以了。下面上代碼了。
惹人頭文件 這個(gè)頭文件須要本身導(dǎo)入不然 XMPPvCardTemp 下的辦法調(diào)用不了。
#import "XMPPvCardTemp.h"
聲明相干對象
// 聲明上傳頭像相干對象 @property (nonatomic , strong) XMPPvCardCoreDataStorage *xmppvCardStorage; @property (nonatomic , strong) XMPPvCardTempModule *xmppvCardTempModule; @property (nonatomic , strong) XMPPvCardAvatarModule *xmppvCardAvatarModule;
初始化相干對象
// 初始化辦法 - (void)setupStream { _xmppStream = [[XMPPStream alloc] init]; [_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()]; _xmppRosterDataStorage = [[XMPPRosterCoreDataStorage alloc] init]; _xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:_xmppRosterDataStorage]; // _xmppRoster.autoFetchRoster = YES; // _xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES; // _xmppvCardStorage = [XMPPvCardCoreDataStorage sharedInstance]; _xmppvCardTempModule = [[XMPPvCardTempModule alloc] initWithvCardStorage:_xmppvCardStorage]; _xmppvCardAvatarModule = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:_xmppvCardTempModule]; [_xmppvCardTempModule addDelegate:self delegateQueue:dispatch_get_main_queue()]; [_xmppvCardAvatarModule addDelegate:self delegateQueue:dispatch_get_main_queue()]; }
在登錄成功的回調(diào)中與XMPPStream對象進(jìn)行接洽關(guān)系
// 上岸成功 - (void) xmppStreamDidAuthenticate:(XMPPStream *)sender { [self goOnline]; NSLog(@"上岸成功"); [[NSUserDefaults standardUserDefaults] setObject:@"success" forKey:XMPPLogin]; [_xmppRoster activate:_xmppStream]; [_xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()]; [_xmppvCardTempModule activate:_xmppStream]; [_xmppvCardAvatarModule activate:_xmppStream]; [self queryRoster]; }
上傳頭像的代碼
原文地址:http://blog.csdn.net/qqmcy/article/details/42422893
- (void) offeringProfile { NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" stringValue:@"vcard-temp"]; NSXMLElement *photoXML = [NSXMLElement elementWithName:@"PHOTO"]; NSXMLElement *typeXML = [NSXMLElement elementWithName:@"TYPE" stringValue:@"image/jpeg"]; UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"changmen" ofType:@"jpg">; NSData *dataFromImage = UIImageJPEGRepresentation(image, 0.7f); NSXMLElement *binvalXML = [NSXMLElement elementWithName:@"BINVAL" stringValue:[dataFromImage base64Encoding]]; [photoXML addChild:typeXML]; [photoXML addChild:binvalXML]; [photoXML addChild:photoXML]; XMPPvCardTemp * myvCardTemp = [_xmppvCardTempModule myvCardTemp]; NSLog(@"%@",myvCardTemp); if (myvCardTemp) { myvCardTemp.photo = dataFromImage; [_xmppvCardTempModule updateMyvCardTemp:myvCardTemp]; }else { XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML]; newvCardTemp.nickname = @"nick"; [_xmppvCardTempModule updateMyvCardTemp:newvCardTemp]; } }
相關(guān)案例查看更多
相關(guān)閱讀
- 微信分銷
- 網(wǎng)站建設(shè)價(jià)格
- 網(wǎng)站收錄
- 汽車報(bào)廢
- 高端網(wǎng)站建設(shè)公司
- 網(wǎng)站建設(shè)百度官方
- 汽車報(bào)廢系統(tǒng)
- 網(wǎng)站建設(shè)方法
- 云南網(wǎng)站開發(fā)哪家好
- 百度小程序開發(fā)公司
- 文山小程序開發(fā)
- 云南網(wǎng)站建設(shè)哪家公司好
- 小程序表單
- 云南軟件定制
- 云南網(wǎng)絡(luò)營銷顧問
- 云南網(wǎng)站建設(shè)百度官方
- 云南網(wǎng)站建設(shè)優(yōu)化
- 網(wǎng)站開發(fā)公司哪家好
- 迪慶小程序開發(fā)
- 保險(xiǎn)網(wǎng)站建設(shè)公司
- 云南手機(jī)網(wǎng)站建設(shè)
- 百度人工排名
- 網(wǎng)站沒排名
- 網(wǎng)站建設(shè)選
- 網(wǎng)站建設(shè)公司地址
- 云南網(wǎng)站建設(shè)選
- 網(wǎng)站制作哪家好
- 政府網(wǎng)站建設(shè)服務(wù)
- 公眾號模板消息
- 關(guān)鍵詞快速排名