XMPP之vCard(个人信息)模块:XEP-0054

如之前所说,建议建立一个XMPPStream单例对象,然后再在这个单例对象中进行模块添加,当然使用其他你认为合适的方式进行下面的模块添加也是OK的

XEP-0054:vcard-temp(电子名片)

1,导入头文件,最后一个头文件是vCard相关的头像模块
#import "XMPPvCardTempModule.h"
#import "XMPPvCardTemp.h"
#import "XMPPvCardCoreDataStorage.h"
#import "XMPPvCardAvatarModule.h"
2, 模块添加
//添加vCard模块
_vCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
_vCardModule = [[XMPPvCardTempModule alloc] initWithvCardStorage: self.vCardStorage];
[self.vCardModule activate:_xmppStream];
_vCardAvatorModule = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:self.vCardModule];
[self.vCardAvatorModule activate:_xmppStream];
3,模块使用:

如果需要使用模块,需要把模块相应的对象暴漏到头文件中方便我们之后调用
在本模块中需要暴漏的是XMPPvCardTempModule对象,因为XMPPvCardTempModule对象下面有一个myvCardTemp属性,可以直接对其取值,或者赋值后更新,具体如下

//1,取出myvCardTemp对象
XMPPvCardTemp *myvCard = [IMStream sharedStream].vCardModule.myvCardTemp;

//2,进行相应的操作
myvCard.nickname = @"ivanl003";
myvCard.photo = UIImagePNGRepresentation([UIImage imageNamed:@"addressbook_seleted"]);

//3,更新数据到数据库和服务器
[[IMStream sharedStream].vCardModule updateMyvCardTemp:myvCard];
4,释放模块,当你不需要再使用这个模块的时候可以释放掉这个模块(在单例中貌似没有这个必要,可以在控制器死亡的时候进行释放,具体放在那里看具体情况)
//首先冻结模块
[_vCardModule deactivate];
//然后把对象设置为nil
_vCardStorage = nil;
_vCardModule = nil;
_vCardAvatorModule = nil;

你可能感兴趣的:(XMPP之vCard(个人信息)模块:XEP-0054)