XMPP-用户登录

来源:互联网 发布:ubuntu kvm安装win7 编辑:程序博客网 时间:2024/05/22 19:41

用户登录/注册的思路:

/** *  思路: *  1.初始化 XMPPStream,设置代理 *  2.设置 XMPPStream 的 MyJid hostName *  3.开始链接 *  4.链接成功,发送密码给服务器,进行认证或注册(代理方法中实现) *  5.认证成功,发送一个"在线消息"给服务器,默认登陆成功是不在线的(代理方法中实现) */
// xmmp 基础服务类@property (strong,nonatomic) XMPPStream * xmppStream;

登录:

/** *  链接到 xmpp 服务器 */- (void)connect{    if (self.xmppStream == nil) {        // 初始化 xmppstream        self.xmppStream = [[XMPPStream alloc] init];        // 设置代理,发到子线程中执行        [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:@"账户" 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);        }    }}

代理方法:

#pragma mark - XMPPStreamDelegate#pragma mark - 链接成功:在此方法中要发送密码服务器,进行认证- (void)xmppStreamDidConnect:(XMPPStream *)sender{    NSError * error = nil;    // 登录    [self.xmppStream authenticateWithPassword:@"密码" error:&error];    // 注册    // [self.xmppStream registerWithPassword:reigsterPwd error:&error];    if (error) {        NSLog(@"%@",[error userInfo].description);    }}#pragma mark 与服务器断开连接-(void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error{}#pragma mark - 认证成功:发送在线状态- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender{    XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];    [self.xmppStream sendElement:presence];}#pragma mark - 登陆失败,调用此方法- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error{}#pragma mark 注册成功-(void)xmppStreamDidRegister:(XMPPStream *)sender{}#pragma mark 注册失败-(void)xmppStream:(XMPPStream *)sender didNotRegister:(DDXMLElement *)error{}

断开链接:

/** *  断开链接 */- (void)disconnect{    // 断开链接的状态    XMPPPresence * presence = [XMPPPresence presenceWithType:@"unavailble"];    [self.xmppStream sendElement:presence];    // 断开    [self.xmppStream disconnect];}
0 0
原创粉丝点击