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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,304评论 4 34
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • 家家有本难念的经。每一对CP在激情过后,都将迎来略显平淡的未来,然而能不能撑过明天晚上是享受后天灿烂阳光的前提。 ...
    临渊荐书阅读 788评论 0 0
  • 突如其来的下雨天 三分之一的雨水 三分之二的我和你 熙熙攘攘的人群 瞪大了眼睛在寻找 第一次相见费劲小小周折 穿来...
    与生结弦阅读 281评论 0 0