【iOS XMPP】使用XMPPFramewok(二):用户登录

XMPP - 实现登录与注销 实现登录与注销#import "AppDelegate.h" #import "XMPPFramework.h" /* * 在AppDelegate实现登录 1. 初始化XMPPStream 2. 连接到服务器[传一个JID] 3. 连接到服务成功后,再发送密码授权 4. 授权成功后,发送"在线" 消息 */ @interface AppDelegate ()<XMPPStreamDele 阅读详情

用户登录

 

准备工作

比较知名的开源XMPP服务器:一个是Openfire,一个是ejabberd

Openfire 使用 Java 语言编写,比较容易上手,地址:http://www.igniterealtime.org/projects/openfire/

ejabberd 使用 Erlang 语言编写,是一款非常知名的 Erlang 开源项目,地址:http://www.ejabberd.im/

安装 ejabberd,可以参考我的博客:【ejabberd】安装XMPP服务器ejabberd(Ubuntu 12.04)

搭建一个自己的 XMPP 服务器之后,就让我们开始吧!

 

连接服务器

1、新建一个 XMPPStream 对象,添加委托

添加委托方法 - (void)addDelegate:(id)delegate delegateQueue:(dispatch_queue_t)delegateQueue

参数 delegateQueue 为委托回调所使用的 GCD 队列,dispatch_get_main_queue() 获取主线程 GCD 队列

2、设置 JID 和 主机名

JID 一般由三部分构成:用户名,域名和资源名,例如 test@example.com/Anthony

如果没有设置主机名,则使用 JID 的域名作为主机名

端口号是可选的,默认是 5222

3、连接

复制代码
- (void)connect {
    if (self.xmppStream == nil) {
        self.xmppStream = [[XMPPStream alloc] init];
        [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
    }
    
    if (![self.xmppStream isConnected]) {
        NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
        XMPPJID *jid = [XMPPJID jidWithUser:username domain:@"lizhen" resource:@"Ework"];
        [self.xmppStream setMyJID:jid];
        [self.xmppStream setHostName:@"10.4.125.113"];
        NSError *error = nil;
        if (![self.xmppStream connect:&error]) {
            NSLog(@"Connect Error: %@", [[error userInfo] description]);
        }
    }
}
复制代码

 

身份认证

实现 - (void)xmppStreamDidConnect:(XMPPStream *)sender 委托方法

连接服务器成功后,回调该方法

This method is called after the XML stream has been fully opened. More precisely, this method is called after an opening <xml/> and <stream:stream/> tag have been sent and received, and after the stream features have been received, and any required features have been fullfilled. At this point it's safe to begin communication with the server.

身份认证方法 - (BOOL)authenticateWithPassword:(NSString *)inPassword error:(NSError **)errPtr

复制代码
- (void)xmppStreamDidConnect:(XMPPStream *)sender {
    NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
    NSError *error = nil;
    if (![self.xmppStream authenticateWithPassword:password error:&error]) {
        NSLog(@"Authenticate Error: %@", [[error userInfo] description]);
    }
}
复制代码

 

上线

实现 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender 委托方法

身份认证成功后,回调该方法

This method is called after authentication has successfully finished. 

If authentication fails for some reason, the xmppStream:didNotAuthenticate: method will be called instead.

新建一个 XMPPPresence 对象,类型为 available,发送!

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender {
    XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];
    [self.xmppStream sendElement:presence];
}

 

退出并断开连接

新建一个 XMPPPresence 对象,类型为 unavailable,发送!

断开连接

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

 

 

Android 开发讨论群:84778336
iOS 开发讨论群:82873648

知识共享许可协议
本作品采用知识共享署名-非商业性使用 3.0 许可协议进行许可。
转载请署名李震(博客地址:http://www.cnblogs.com/dyingbleed/),且不得用于商业目的。
ios 基于XMPP的及时通讯app 自己大学时期完成的萌芽项目,有点粗糙,但是可以使用,仅供学习参考 立即下载

相关推荐

ios xmpp即时通讯实现

基于openfire服务器的ios xmpp即时通讯的实现,登陆,注册,聊天,获取花名册,发送图片,设置都想,修改名片等简单实现

IOS开发:XMPP聊天工具的使用

XMPP聊天工具的使用

tiebanshao的博客 686

ios-xmpp聊天界面.zip

搭建QQ登录,注册,添加好友,删除好友,发送消息功能

iOSXMPP登录、添加好友、退出

//  xmppDENGLU #pragma XMPP 连接 - (AppDelegate *)appDelegate {     AppDelegate *delegate =  (AppDelegate *)[[UIApplication sharedApplication] delegate];     // delegate.chatDelegate = self; re

SHTLoveXX的专栏 1188

ios xmpp demo

基于xmpp的即时通讯(需要配置openfire)。包括注册新用户,连接,获取朋友列表,文字通讯和语音通讯。其中保存朋友列表和聊天记录使用的是xmpp框架本身的coredata,没有使用任何其他的自定义的存储方式。

iOS下的XMPPFramework

在iOS下面的XMPP开发的框架,之前在网上找了很多都少文件,这个相对全一点。

iOS —— XMPP 详解

iOS - XMPP 的使用 转载https://www.cnblogs.com/QianChia/p/6411914.html 1、XMPP XMPP 是一个基于 Socket 通信的即时通讯的协议,它规范了即时通信在网络上数据的传输格式,比如登录,获取好友列表等等的格式。XMPP 在网络传输的数据是 XML 格式。 开发架构: iOS 框架:XMPPFra...

SHTLoveXX的专栏 1687

Amos实战:如何用Bootstrap法检验中介效应?附完整操作步骤

本文详细介绍了如何使用Amos软件通过Bootstrap法检验中介效应,包括模型设定、参数配置和结果解读。Bootstrap方法因其不依赖正态分布假设、统计功效高等优势,成为中介效应分析的首选方法。文章提供了完整的操作步骤和实用建议,帮助研究者准确评估变量间的中介作用机制。

zz67890的博客 1437

ios 使用XMPPFramewok 用户登录

用户登录   准备工作 比较知名的开源XMPP服务器:一个是Openfire,一个是ejabberd Openfire 使用 Java 语言编写,比较容易上手,地址:http://www.igniterealtime.org/projects/openfire/ ejabberd 使用 Erlang 语言编写,是一款非常知名的 Erlang 开源项目,地址:http:

Code-lover's Learning Notes 663

C#报表,使用微软rdlc模板,生成Excel, PDF, Word, Image文件,使用自定义对象做数据集不连接数据库

我项目是用vs2017 建的,.NET farmwork 4.7.2 这种报表可以用于任何模式的应用,web,桌面,因为这只是生成一个文件或者文件流 步骤比较详细啰嗦,其中有讲到rdlc怎么新建设计,如果已经会设计rdlc了的可以直接跳到底部看代码的执行结果, 底部还有源码下载链接,百度盘 首先控制台安装报表包 新建rdlc 报表 建立rdlc里要用的数据模型 模型建完,或者修改都要重新...

qq_35955916的博客 5202

华为星闪SLE实战:手把手教你用HarmonyOS开发智能家居控制应用(附完整代码)

本文详细介绍了如何利用华为星闪SLE技术,结合HarmonyOS开发智能家居控制应用。通过对比传统无线技术,阐述了星闪SLE在低时延、高可靠性和高并发方面的优势,并提供了从环境搭建、设备发现、连接管理到核心控制代码的完整实战教程,帮助开发者快速上手这一无线短距通信技术。

bert9linguist的博客 505

半导体核心零部件控制算法开发:C/C++实时实现与CiA 402实践

半导体设备控制算法是面向高精度制造的实时控制系统工程,其本质是将控制理论(如PID、LQR、MPC)在资源受限嵌入式平台(ARM Cortex-R/Xilinx Zynq)上转化为纳秒级响应、亚微米定位、ppb级稳态精度的可量产固件。核心挑战源于物理约束——MFC气体动态非线性、ESC热应力限值、EtherCAT 125μs同步抖动≤100ns等硬性指标,倒逼算法必须手写C/C++、绕过MATLAB自动生成、深度适配CiA 402协议栈与裸机/RTOS运行环境。技术价值体现在工艺良率提升、设备国产化替代与F

weixin_34161083的博客 452

COCO数据集缺失文件补全方法

本文代码是以目标检测(object detection)和实例分割(instance segmentation)任务的标签文件为例,即文件。其他任务的标签文件内容略有不同,但是图片来源表示字段完全相同,因此代码可通用。另外如果是非2017版本COCO应该也通用。msgspec是一个高性能的序列化和验证库,支持 JSON、MessagePack、YAML 和 TOML 等多种格式。高性能:在常见协议的编码/解码中表现出色,通常比其他库快10-80倍。零成本的模式验证。

qq_46396470的博客 1992
上一篇: 【iOS XMPP】使用XMPPFramewok(一):添加XMPPFramework(XCode 4.6.2)
下一篇: 【iOS XMPP】使用XMPPFramewok(三):好友状态
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值