标签:
一、即时通讯技术简介
三、XMPP 简介
六、XMPP工作原理
3.修改/usr/local/openfire/目录权限
4.设置openfire数据库
7.XMPP框架提供的主要扩展功能
五、用户登录的流程图
1.用户登录的步骤
XMPPFrame框架是通过代理的方式实现消息传递的
//设置XMPPStream
- (void)setupStream {
_xmppStream = [[XMPPStream alloc] init];
[_xmppStream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
}
// XMPPStream上线
- (void)goOnline {
XMPPPresence *presence = [XMPPPresence presence];
[_xmppStream sendElement:presence];
}
// XMPPStream离线
- (void)goOffline {
XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];
[_xmppStream sendElement:presence];
}
4.connect方法
- (void)connect {
// 1. 设置XMPPStream
[self setupStream];
// 2. 设置用户名、密码及服务器
// 3. 设置XMPPStream信息
[_xmppStream setMyJID:[XMPPJID jidWithString:userName]];
[_xmppStream setHostName:server];
_myPassword = password;
// 4. 连接至服务器,如果没有指定jid和hostName,连接才会报错
NSError *error = nil;
[_xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error];
if (error) {
NSLog(@"连接错误:%@", error.localizedDescription);
}
}
5.disconnect方法
- (void)disconnect
{
// 1. 发送离线状态
[self goOffline];
// 2. XMPPStream断开连接
[_xmppStream disconnect];
}
6.XMPP代理方法
#pragma mark - XMPPStream代理方法
#pragma mark 连接到服务器
- (void)xmppStreamDidConnect:(XMPPStream *)sender
{
// 1. 验证密码
NSError *error = nil;
[_xmppStream authenticateWithPassword:_myPassword error:&error];
if (error) {
NSLog(@"身份验证错误:%@", error.localizedDescription);
}
}
#pragma mark 通过验证
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
{
[self goOnline];
}
#pragma mark 验证失败
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error
{
NSLog(@"验证失败:%@", error);
}
7.在应用程序状态切换时连接或断开连接
#pragma mark 应用程序注销激活状态
- (void)applicationWillResignActive:(UIApplication *)application
{
// 断开连接
[self disconnect];
}
#pragma mark 应用程序重新被激活
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// 连接
[self connect];
}
8.在AppDelegate中添加访问助手方法
#pragma mark - AppDelegate访问助手方法
/**
AppDelegate的访问助手
*/
- (AppDelegate *)appDelegte
{
return (AppDelegate *)[[UIApplication sharedApplication] delegate];
}
/**
AppDelegate的XMPPStream属性访问助手
*/
- (XMPPStream *)xmppStream
{
return [[self appDelegte] xmppStream];
}
标签:
原文地址:http://www.cnblogs.com/oc-bowen/p/5263428.html