四个类:
// 电子名片数据存储
XMPPvCardCoreDataStorage
// 电子名片模块
XMPPvCardTempModule
// 电子名片的头像
XMPPvCardAvatarModule
// 电子名片实体
XMPPvCardTemp
// 注册花名册和头像
- (void)connect{
if (self.xmppStream == nil) {
// 1.初始化 xmppstream
self.xmppStream = [[XMPPStream alloc] init];
////////////////////////////////////////////////// 2.添加电子名片模块//////////////////////////////
// 2.1创建电子名片的数据存储
self.vCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
// 2.2根据名片的数据存储创建电子名片模块
self.vCard = [[XMPPvCardTempModule alloc] initWithvCardStorage:self.vCardStorage];
// 2.3用 xmppstream 激活名片
[self.vCard activate:self.xmppStream];
// 电子名片配和头像模块一起使用
// 3.添加头像模块
// 3.1根据电子名片创建头像模块
self.avatar = [[XMPPvCardAvatarModule alloc] initWithvCardTempModule:self.vCard];
// 激活头像模块
[self.avatar activate:self.xmppStream];
////////////////////////////////////////////////////////////////////////////////////////////////////
// 设置代理,发到子线程中执行
[self.xmppStream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
}
// 链接之前要判断是都链接成功,否则会出现用上一次的 jid 重复链接的错误
if (![self.xmppStream isConnected]) {
// 设置 xmppstream 的 myJID hostName hostPort 默认的5222可以不用设置
self.xmppStream.myJID = [XMPPJID jidWithUser:@"zhangsan" domain:@"127.0.0.1" resource:nil];
self.xmppStream.hostName = @"127.0.0.1";
// 开始链接
NSError * error = nil;
if (![self.xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error]) {
NSLog(@"%@",[error userInfo].description);
}
}
}
// 获取名片的信息
XMPPvCardTemp *myvCard = [[AppDelegate alloc] init].vCard.myvCardTemp;
// XMPPvCardTemp类中有很多需要的属性
// 更新电子名片的信息
[[WCXMPPTool sharedWCXMPPTool].vCard updateMyvCardTemp:myVCard];