XMPP默认没有导入电子名片模块,所以得自己手动在XMPPFramework.h里导入
XMPPvCardTempMoodule中有个XMPPvCardTemp即是当前登录用户,然后调用属性就可以取出相应的值,但是有部分值XMPP没有给解析出来,所以才叫XMPPvCardTempMoodule
#import "XMPPvCardTempModule.h" //电子名片模块
#import "XMPPvCardCoreDataStorage.h" //电子名片存储模块
#import "XMPPvCardAvatarModule.h" //电子名片头像模块
电子名片的获取过程是发起请求给服务器,然后服务器返回数据给CoreData,并存储到本地数据库,然后从本地数据库取出来,因为头像模块和电子名片模块是分离开的,所以两个模块都得添加
//设置电子名片模块
self.vCardStorage=[XMPPvCardCoreDataStorage sharedInstance];
self.vCard=[[XMPPvCardTempModule alloc]initWithvCardStorage:self.vCardStorage];
[self.vCard activate:self.stream];//必须手动激活
//设置电子名片头像模块,此处不导入也可以,一样可以获取到自己头像,只是后面获取好友信息时获取不到头像,得根据JID利用此模块获取好友头像
self.avatar=[[XMPPvCardAvatarModule alloc]initWithvCardTempModule:self.vCard];
[self.avatar activate:self.stream];
XMPPvCardTempMoodule中有个XMPPvCardTemp即是当前登录用户,然后调用属性就可以取出相应的值,但是有部分值XMPP没有给解析出来,所以才叫XMPPvCardTempMoodule
XMPPvCardTemp *myCard =[XMPPTool sharedXMPPTool].vCard.myvCardTemp;
self.iconImageView.image=[UIImage imageWithData:myCard.photo];//头像
self.nickNameLabel.text=myCard.nickname;//昵称
self.nameLabel.text=[LSAccount sharedAccount].loginName;//JID这里获取不到用登录名代替
self.orgNameLabel.text=myCard.orgName;//公司
self.departmentLabel.text=myCard.orgUnits[0];//部门
self.jobLabel.text=myCard.title;//职位
self.telLabel.text=myCard.telecomsAddresses[0];//电话号XMPP没有获取返回nil
self.emailLabel.text=myCard.mailer;//邮箱
电子名片的修改即把XMPPvCard取出来,修改完,在调用update方法即可,头像photo是Data所以得和UIImage转换
XMPPTool *tool=[XMPPTool sharedXMPPTool];
XMPPvCardTemp *vCard=tool.vCard.myvCardTemp;
vCard.photo=UIImageJPEGRepresentation(self.iconImageView.image, 0);
vCard.nickname=self.nickNameLabel.text;
vCard.orgName=self.orgNameLabel.text;//公司
if (self.departmentLabel.text!=nil) {
vCard.orgUnits=@[self.departmentLabel.text];
}
vCard.title=self.jobLabel.text;//职位
vCard.note=self.telLabel.text;
vCard.mailer=self.emailLabel.text;
//更新数据
[tool.vCard updateMyvCardTemp:vCard];