WCXMPPTool是一个单例的工具类,内部实现xmpp的一些方法
一、登录
注册和登录一样:都是先用jid去连接,然后连接成功后,再发送《注册》密码,对应的有xmpp代理会调用方法。
不同在于发生密码的方法:
NSString *pwd = [WCUserInfo sharedWCUserInfo].registerPwd;
[_xmppStream registerWithPassword:pwd error:nil];
以及xmpp代理方法:
#pragma mark 注册成功
-(void)xmppStreamDidRegister:(XMPPStream *)sender{
WCLog(@"注册成功");
}
#pragma mark 注册失败
-(void)xmppStream:(XMPPStream *)sender didNotRegister:(DDXMLElement *)error{
WCLog(@"注册失败:%@",error);
}
二、获取个人信息
首先必须需要添加一个《电子名片信息》模块(添加电子名片模块 + 一般电子模块配合头像模块使用)
@property(nonatomic, strong, readonly)XMPPvCardTempModule *vCard;//电子名片
XMPPvCardAvatarModule *_avatar;//头像模块
XMPPvCardCoreDataStorage *_vCardStorage;//电子名片数据存储
#warning 每添加一个模块,都需要激活
//添加电子名片模块
_vCardStorage = [XMPPvCardCoreDataStorage sharedInstance];
_vCard = [[XMPPvCardTempModule alloc]initWithvCardStorage:_vCardStorage];
//激活模块
[_vCard activate:_xmppStream];
//通常还会配一个头像模块
_avatar = [[XMPPvCardAvatarModule alloc]initWithvCardTempModule:_vCard];
//激活模块
[_avatar activate:_xmppStream];
//XMPP提供一个方法,直接获取个人信息
XMPPvCardTemp *myvCard =[WCXMPPTool sharedWCXMPPTool].vCard.myvCardTemp;
//设置头像 昵称 微信号
if (myvCard.photo) {
self.headerView.image = [UIImage imageWithData:myvCard.photo];
}
self.nickNameLabel.text = myvCard.nickname;
WCUserInfo *userInfo = [WCUserInfo sharedWCUserInfo];
self.userNumLabel.text = [NSString stringWithFormat:@"微信号:%@",userInfo.user];
//XMPP个人信息 更新到服务器
XMPPvCardTemp *myVCard =[WCXMPPTool sharedWCXMPPTool].vCard.myvCardTemp;
myVCard.nickname = self.nickNameLabel.text;
myVCard.orgName = self.orgnameLabel.text;
myVCard.title = self.phoneLabel.text;
myVCard.mailer = self.emailLabel.text;
//更新 这方法内部会实现数据上传到服务器
[[WCXMPPTool sharedWCXMPPTool].vCard updateMyvCardTemp:myVCard];
三、自动连接
只需要添加模块即可
XMPPReconnect *_reconnect;//自动连接模块
//添加自动连接模块
_reconnect = [[XMPPReconnect alloc]init];
//激活模块
[_reconnect activate:_xmppStream];