您的位置:首页 > 移动开发 > IOS开发

IOS使用XMPP最新教程(二)登陆实现

2015-09-24 21:40 465 查看
因为要写成一个系列,不想每次写太多,这次就简单的实现一个登陆的功能。

//是否连接
-(BOOL)connect;

//终止连接
- (void)disconnect

//设置xmppStream
-(void)setupStream;

//上线
-(void)goOnline;

//下线
-(void)goOffline;

主要就是这几个函数

@property (nonatomic,readonly)XMPPStream * xmppStream;

在定义一个上面的属性

-(void)setupStream
{
xmppStream = [[XMPPStream alloc]init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
}

- (void)goOnline {
XMPPPresence *presence = [XMPPPresence presence];
[[self xmppStream] sendElement:presence];
}

- (void)goOffline {
XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];
[[self xmppStream] sendElement:presence];
}

- (void)disconnect
{
[self goOffline];
[xmppStream disconnect];
}

上面的函数的实现(完全是可以粘贴过去的),其中我去掉了花名册相关的部分,因为现在还用不到。
最重要的是下面的connect函数

- (BOOL)connect {

[self setupStream];

if (![xmppStream isDisconnected]) {
return YES;
}

[xmppStream setMyJID:[XMPPJID jidWithString:@"1@127.0.0.1"]];
[xmppStream setHostName:@"127.0.0.1"];
password = @"1";

NSError *error = nil;
if (![xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error])
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:[NSString stringWithFormat:@"Can't connect to server %@", [error localizedDescription]]
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];

return NO;
}

return YES;
}
为了帮助新手理解,我去掉了NSUserDefaults的部分,把用户名和密码写死在里面了。
注意那个connectWithTimeout函数,在网上搜到的很多都是直接用connect,但是那个函数在最新版的framwork里面已经被去掉了,要用我这个才行。
上面函数是一个连接的功能,连接到服务器,下面这个函数是验证功能,验证你的密码然后登录到服务器。

- (void)xmppStreamDidConnect:(XMPPStream *)sender{
NSError *error = nil;
//验证密码
[[self xmppStream] authenticateWithPassword:password error:&error];

}

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender{

[self goOnline];
}

然后你就可以在你的服务器上面看到你的用户已经亮了,说明登陆成功了。

下一篇准备写如何获取好友列表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: