您的位置:首页 > 移动开发 > IOS开发

通过xmpp 上传头像 -- IOS端

2015-12-03 09:35 260 查看
// 声明上传头像相关对象
@property (nonatomic , strong) XMPPvCardCoreDataStorage *xmppvCardStorage;
@property (nonatomic , strong) XMPPvCardTempModule *xmppvCardTempModule;
@property (nonatomic , strong) XMPPvCardAvatarModule *xmppvCardAvatarModule;

//初始化
_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()];

#param  上传
- (void) upload {
dispatch_queue_t  global_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(global_queue, ^{
NSString *xmppName = [NSString stringWithFormat:@"%d", 101];

NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard"];
[vCardXML addAttributeWithName:@"xmlns" stringValue:@"vcard-temp"];
NSXMLElement *photoXML = [NSXMLElement elementWithName:@"PHOTO"];
NSXMLElement *typeXML = [NSXMLElement elementWithName:@"TYPE" stringValue:@"image/jpeg"];

UIImage *image = //初始化
NSData *dataFromImage = UIImageJPEGRepresentation(image, 1.0f);//图片放缩
NSXMLElement *binvalXML = [NSXMLElement elementWithName:@"BINVAL" stringValue:[dataFromImage base64Encoding]];
[photoXML addChild:typeXML];
[photoXML addChild:binvalXML];
[vCardXML addChild:photoXML];

XMPPvCardTemp * myvCardTemp = [_xmppvCardTempModule myvCardTemp];
if (myvCardTemp) {
myvCardTemp.photo = dataFromImage;
[_xmppvCardTempModule activate: self.xmppStream];
[_xmppvCardTempModule updateMyvCardTemp:myvCardTemp];
} else {
XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML];
newvCardTemp.nickname = xmppName;
[_xmppvCardTempModule activate: self.xmppStream];
[_xmppvCardTempModule updateMyvCardTemp:newvCardTemp];
}
});
}

#param  上传反馈
-(void)xmppvCardTempModule:(XMPPvCardTempModule *)vCardTempModule didReceivevCardTemp:(XMPPvCardTemp *)vCardTemp forJID:(XMPPJID *)jid
{
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: