XMPP用户登录
XMPP用户登录
技术博客http://www.cnblogs.com/ChenYilong/
新浪微博http://weibo.com/luohanchenyilong














码均要基于此类进行
• XMPPParser:供XMPPStream解析使用
• XMPPJID:提供了一个不可变JID的实现,遵守NSCopying协议和 NSCoding协议
• XMPPElement:以下三个XMPP元素的基类
• XMPPIQ :请求(加好友)
• XMPPMessage :消息
• XMPPPresence :出席(标示用户的在线状态)
• XMPPModule:开发XMPP扩展时使用
• XMPPLogging:XMPP的日志框架
• XMPPInternal:整个XMPP框架内部使用的核心和高级底层内容



• 3. 在完成连接的代理方法中验证用户密码,连接完成后XMPPStream 的isConnect属性为YES
• 4. 在验证代理方法中判断用户是否登录成功
• 5. 上线或者下线成功后,向服务器发送Presence数据,以更新用户在 服务器的状态

AppDelegate中,以便于全局访问• 在AppDelegate中添加以下属性和方法定义
@property (strong, nonatomic, readonly)XMPPStream *xmppStream; - (void)connect;
- (void)disconnect;


}
// XMPPStream上线 - (void)goOnline XMPPPresence[_xmppStream
}
{
*presence = [XMPPPresence presence];sendElement:presence];
// XMPPStream离线
- (void)goOffline {
XMPPPresence *presence = [XMPPPresencepresenceWithType:@"unavailable"];
[_xmppStream sendElement:presence]; }
// 1. 设置XMPPStream [self setupStream];
// 2. 设置用户名、密码及服务器 // 3. 设置XMPPStream信息
[_xmppStream setMyJID:[XMPPJIDjidWithString:userName]]; [_xmppStreamsetHostName:server];
_myPassword = password;
// 4. 连接至服务器,如果没有指定jid和hostName,连接才会报错
NSError *error = nil;
[_xmppStreamconnectWithTimeout:XMPPStreamTimeoutNoneerror:&error]; if (error) {
NSLog(@"连接错误:%@", error.localizedDescription); }
}

// 1. 发送离线状态 [self goOffline];
// 2. XMPPStream断开连接 [_xmppStreamdisconnect];
}

#pragma mark 连接到服务器
- (void)xmppStreamDidConnect:(XMPPStream *)sender {
// 1. 验证密码 NSError *error = nil;
[_xmppStream authenticateWithPassword:_myPassworderror:&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); }
// 断开连接
[self disconnect]; }
#pragma mark 应用程序重新被激活
- (void)applicationDidBecomeActive:(UIApplication *)application {
// 连接
[self connect]; } 
AppDelegate的访问助手
*/
- (AppDelegate *)appDelegte {
return (AppDelegate *)[[UIApplicationsharedApplication] delegate];
}
/** AppDelegate的XMPPStream属性访问助手 */
- (XMPPStream *)xmppStream {
return [[self appDelegte] xmppStream]; }

XMPP用户登录的更多相关文章
- iOS开发——网络编程OC篇&(二)XMPP实现用户登录与注销
XMPP实现用户登录与注销 登录: 步骤: * 在AppDelegate实现登录 1. 初始化XMPPStream 2. 连接到服务器[传一个JID] 3. 连接到服务成功后,再发送密码授权 4. 授 ...
- 【iOS XMPP】使用XMPPFramewok(二):用户登录
转自:http://www.cnblogs.com/dyingbleed/archive/2013/05/10/3069397.html 用户登录 准备工作 比较知名的开源XMPP服务器:一个是Ope ...
- PHP验证用户登录例子-学习笔记
1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...
- Ubuntu设置root用户登录图形界面
Ubuntu默认的是root用户不能登录图形界面的,只能以其他用户登录图形界面.这样就很麻烦,因为权限的问题,不能随意复制删除文件,用gedit编辑文件时经常不能保存,只能用vim去编辑. 解决的办法 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录
系列目录 我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先完成了,要不权限是讲不下去了 把我们之前的表更新到EF中去 登录在Account控制器,所以我们要添加Account ...
- Asp.Net Core 项目实战之权限管理系统(5) 用户登录
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- MySQL 用户登录密码和远程登录权限问题
1.mysql数据库,忘记root用户登录密码. 解决如下: a.重置密码 #/etc/init.d/mysqld stop #mysqld_safe --user=mysql --skip-gran ...
- .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息
在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...
随机推荐
- 如何使用URLOS进行docker应用开发
使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完 ...
- UI Recorder 安装教程(二)
前言: UI Recorder支持无线native app(Android, iOS)录制, 基于macaca实现:https://macacajs.com/ 本次教程只针对无线native app( ...
- PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
题意说的很清楚了,这种题的话,做的时候最好就是在纸上自己亲手模拟一下,清楚一下各个指针的情况, 这样写的时候就很清楚各个指针变量保存的是什么值. PS:一次AC哈哈,所以说自己动手在纸上画画还是很有好 ...
- 作业五:分析system_call中断处理过程
分析system_call中断处理过程 一.MesuSO增加getpid和getpid-asm 二.使用GDB跟踪系统调用内核函数sys_getpid 分析system_call中断处理过程 使用gd ...
- js生成uuid代码
function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 3 ...
- 查询过的问题关于HTML的问题
一.Bootstrap字体图标(Glyphicons) http://www.runoob.com/bootstrap/bootstrap-glyphicons.html 二.Jquery 实现 “下 ...
- c++实现计算器功能 -----初代
由于时间问题,我就写的简单一点. 课程作业一 git链接: Operations 里面的Operations.cpp文件就是完成品. 1 我就简单的对我原来的代码进行了重构,原本的代码已经把函数都分得 ...
- Studying GIT
Studying git Shopping list: GIT的功能 接触一个新的软件或者网站,最重要的就是认识它的功能:Git 是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS ...
- Docker(三)-Docker中Image、Container与Volume的迁移
Image 镜像的迁移,适用于离线环境. 一般离线环境,都会自建Docker Registry. 无论 官方的 ,还是最近流行的 Harbor ,都是不错的选择. 但是,这个世界上就是有些环境,或者说 ...
- [转帖]LNMP组件安装
https://lnmp.org/install.html 系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/M ...



