iOS XMPP框架学习

[iPhone高级] 基于XMPP的IOS聊天客户端程序(XMPP服务器架构) 最近看了关于XMPP的框架,以文本聊天为例,需要发送的消息为: helloWord 基中from是从哪个用户发送的消息,to是发给谁的消息,XMPP的用户都是以邮箱形式。body就是我们发送的消息文本。 好了,说到这里,我们就来开发一个基于XMPP的IOS聊天客户端程序,首先我们需要XMPP服务器,这里,我就拿本机做服务器,首先从xmpp Server下载ejabberd这个服务 阅读详情

先总结一下使用XMPP协议的流程

1.初始化XMPPStream,最好在程序启动(或者在某个单例类)代理方法中初始化,以保证只初始化一次,并方便随时访问。相关代码:

xmppStream = [[XMPPStream alloc] init];//实例化

[xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];

[xmppStream setHostName:kXMPPHost];//设置主机名

[xmppStream setHostPort:5222];//设置端口

xmppStream.enableBackgroundingOnSocket = YES;//设备是否能在后台运行,不支持模拟器

xmppReconnect = [[XMPPReconnect alloc] init];//初始化连接流  能在意外断开连接的情况下,自动重连。


xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc] init];//花名册存储  XMPP使用coreData 本地化存储

xmppRoster = [[XMPPRoster alloc] initWithRosterStorage:xmppRosterStorage];//初始化花名册

xmppRoster.autoFetchRoster = YES;//是否自动获取花名册

xmppRoster.autoAcceptKnownPresenceSubscriptionRequests = YES;

//激活组件

[xmppReconnect activate:xmppStream];

[xmppRoster activate:xmppStream];

2.连接XMPP服务器 并设置JID。相关代码

[xmppStream setMyJID:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",myJID,kXMPP_Domain]]];//设置JID,XMPPJID提供了一个不可变JID的实现,遵守NSCopying协议和NSCoding协议

NSError *error = nil;

if (![xmppStream connect:&error])

{

NSLog(error);

return NO;

}

return YES;

3.处理XMPP  connect的代理方法

- (void)xmppStreamDidConnect:(XMPPStream *)sender{//连接成功后,授权认证

if (![xmppStream authenticateWithPassword:password error:&error])//授权

{

NSLog(@"Error authenticating: %@", error);

}

}

4.处理授权的代理方法

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender//授权成功

{

    [self goOnline];//上线通知

    [xmppRoster fetchRoster];//获取花名册

    self.isLogined = YES;

}

- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error//授权失败

{

NSLog(error);

}

- (void)goOnline//上线通知

{

XMPPPresence *presence = [XMPPPresence presence]; // type="available" is implicit

[xmppStream sendElement:presence];

}

- (void)goOffline//下线通知

{

XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];

[xmppStream sendElement:presence];

}

5.接收消息

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message{

if([[UIApplication sharedApplication] applicationState] != UIApplicationStateActive)//程序在后台 用本地提醒

    {

        UILocalNotification *localNotification = [[UILocalNotification alloc] init];

        localNotification.alertAction = @"Ok";

        localNotification.alertBody = [NSString stringWithFormat:@"From: %@\n\n%@",@"新消息:",@"123"];

        [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

    }

}

6.接收上下线通知

- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence{}

7.接受好友请求

- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq











IOS使用XMPP最新教程(一)openfire安装+XMPP框架搭建 最近要开发一个项目,需要IM(即时通讯功能),而大家普遍使用的都是XMPP框架,经过几天的学习,终于把它搭建好了,做了一个demo。 我在网上看了很多例子,基本都已经过时了,搭建不成功,经过不断的探索,才得以成功,我想把我的经验写下来,以免大家重蹈覆辙,浪费大量的时间在这上面。 首先是openfire安装,这个一般没什么问题,按照网上的教程就可以。 我主要说一下XMPP框架的搭建 http 阅读详情

相关推荐

ios xmpp即时通讯实现

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

iOS —— XMPP 详解

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

SHTLoveXX的专栏 1687

iOS下的XMPPFramework

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

iOS 实现XMPP协议

之前做过socket的聊天  可以做到群聊 文字+语音聊天 但是一对一的 加好友之类的 还没实现,服务器端写不来 呵呵 查了资料发现 现在的聊天服务器有开源的  有很多种  很多都是机遇xmpp协议来实现的,xmpp的前身是什么jabber  这个就自己去百度了 我用的一个开源服务器是 openfire 他有 linux mac window版本 他的安装都是比较简单的就部介绍了  网上找到了这

屎壳郎情调-成长日记 5507

ios-xmpp聊天界面.zip

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

Codex接入CCSwitch:本地代理与模型路由配置指南

在AI编程工具链中,本地代理与模型路由是连接智能体与模型服务的核心桥梁。Codex作为OpenAI推出的编程智能体,虽然具备强大的仓库理解和自主编码能力,但其默认模型链路固定,导致在多模型切换、内网统一管理及成本控制上存在天然瓶颈。CCSwitch正是为解决这一痛点而生的本地代理工具,它通过OpenAI兼容协议将Codex的请求透明转发至DeepSeek、通义千问等第三方模型服务,使模型切换如同点击按钮般简单。本文从本地代理和模型路由器的基础原理切入,系统讲解Codex与CCSwitch的安装配置、模型ID

weixin_33910460的博客 427

didReceiveIQ

xmpp 组织架构人员都从IQ里回来然后进行筛选 - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {  if([iq elementForName:@"recentcontactuser"] || [iq elementForName:@"recentcontactgroup"]         

菜鸟日记 759

工创赛智能搬运小车实战:视觉定位、底盘控制与RTOS调度

智能搬运系统是嵌入式控制与机器视觉融合的典型工程实践,其核心在于视觉定位精度、运动控制稳定性与实时任务调度能力。在有限算力(如STM32H7)、低功耗约束和结构化场景下,传统CV方法(如FAST+RANSAC)比轻量级深度学习更具鲁棒性与实时性;而底盘控制需穿透PID表层,直击死区补偿、编码器硬件滤波与负载自适应等物理层细节;RTOS则不是炫技工具,而是保障多模块时序确定性的刚需——尤其在视觉-控制-执行强耦合链路中,任务优先级、事件组通信与栈安全直接影响系统存活。本文聚焦全国大学生工程训练竞赛(工创赛)真

weixin_29194693的博客 263

XMPPFrameWork IOS 开发(四)消息和好友上下线

本文主要介绍xmpp简单的消息发送格式和方法,以及用户上下线状态的处理。

Acorld 8949

从入门到精通:dirmap 高级 Web 目录扫描实战指南

本文提供了一份从环境搭建到高级配置的dirmap Web目录扫描实战指南。详细解析了工具安装、核心配置文件dirmap.conf的深度调优,包括递归扫描、四种扫描模式(字典、爆破、爬虫、Fuzz)的实战应用,并演示了分阶段资产发现的完整工作流程,帮助安全人员高效发现隐藏目录与敏感文件。

rnn9storyteller的博客 479

【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)

前言 今天老师说办公室的电脑有点卡,让我给重新安装一个 Windows 7 系统。于是就用软碟通(UltraISO)在 U 盘上刻录了一个 Windows 7 镜像,然后给老师重装了系统。顺便把制作 U 盘启动盘的教程也分享给大家。 软件 UltraISO v9.7.1.3519:点击跳转(密码:dd2k) 教程 将 U 盘插到电脑上,然后鼠标右击选择格式化(制作启动盘必须格式化) 点击文件-打开 选择下载好的系统镜像(如:Windows 7) 点击启动-写入硬盘映像 选择硬盘

XavierJ的博客 2万+

【iOS XMPP】使用XMPPFramewok(三):好友状态

好友状态   获取好友状态,通过实现  - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence 方法 当接收到 标签的内容时,XMPPFramework 框架回调该方法   一个 标签的格式一般如下:   这里是显示的内容

天下只此一家的专栏 1523

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 905

iOS学习之XMPP框架导入与在workSpace下多工程联编

坚持 成长 每日一篇

chirs的专栏 1031

少儿学编程系列--使用递归画出龙形曲线DragonCurve

龙形曲线(Dragon Curve) 龙形曲线(Dragon Curve)又叫分形龙,是一种自相似碎形曲线的统称,因形似龙的蜿蜒盘曲而得名 使用黄金比例画龙形曲线 根据黄金比例画一条龙曲线。每次递归,第一步向左转32.89度,移动0.74倍原距离;第二个递归步骤向右转46.99度,移动原来距离的0.55倍。请查看这个网页(https://larryriddle.agnesscott.org/ifs/heighway/goldenDragon.htm)了解关于龙形黄线数学的细节 龙形曲线效果 .

penriver的博客 2296

反爬虫:POST 请求参数中 Sign 的加密机制详解,并设计带 Sign 校验的网站

本文介绍了API请求中sign签名的生成原理及实现方法。sign是通过对请求参数加密生成的一串字符串,用于验证请求合法性,防止参数篡改、重放攻击和伪造请求。其生成步骤包括参数排序、拼接字符串、加盐和哈希加密。文章还演示了如何在FastAPI后端实现带sign验证的新闻网站,包括参数校验、时间戳验证和签名比对等安全措施,有效提升API安全性,增加爬虫逆向难度。

数据知道的博客 4073

iOS学习XMPP框架之使用DDLog打印日志

坚持 成长 每日一篇DDLog优点快速 在大多数用例中,Lumberjack比NSLog快了一个数量级。简单 当应用程序启动时,只需一行加单的代码就可配置Lumberjack。然后用DDLog语句简单地取代NSLog语句。 根据你需要的功能添加不同的Loger,后面会介绍各个Loger的作用 [DDLog addLogger:[DDTTYLogger sharedInstance]];

chirs的专栏 1018

这才是 Python 的正确玩法!用强化学习 (RL) 训练 AI 玩《王者荣耀》,胜率 90%!

大家打排位时,一定遇到过那种“意识神级、操作零失误”的对手,或者“走位呆滞、送人头”的队友。以前的“人机”是程序员写死的脚本(If 血量<20% Then 回城)。而现在的顶级 AI(如腾讯绝悟、OpenAI Five),是靠强化学习 (Reinforcement Learning)自己“左右互搏”练出来的。今天,我们不谈枯燥的数学公式,我将手把手教你用,搭建一个能玩 MOBA 游戏的 AI Agent。即使不能去 KPL 打职业,虐一下钻石局还是绰绰有余的!

BUG猿的博客 1182

XMPP 学习资料整理

XMPP 学习资料整理 1.即时通讯群聊ios客户端源码 code4app上面的,感觉写的比较整洁,能满足大多数IM客户端需求; 2.XMPP协议中文版 XMPP协议翻译计划 3.XMPPFramework源码 https://github.com/robbiehanson/XMPPFramework 4.实在不行就看看 小波的视频 http://www.swiftv.

qing101hua的专栏 870

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

iOS xmpp学习文档总结

iOS XMPP学习文档总结       XMPP学起来对于一个初学者来说确实是一件很让人头疼的事,在网上看了很多博客,文章发现很多都是大同小异,不能找见自己满意的文章。废话少说,现在就开始学习XMPP协议。      作为iOS的程序员,我想做XMPP开发,大都用到了XMPPFrameWork这个框架,这个框架写的确实好,而且实现了大多数的扩展协议。在开发过程中我们可能会遇到一下问题:

王素燕 729

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

XMPP学习记录之实战篇

  在学习iOS以来一直想要研究即时聊天方面的技术,因工作原因此计划一直搁浅,近日偷得时闲开始着手与XMPP的学习。在学习之前我一直认为XMPP对我来说是一个很有难度的挑战,在了解了协议的具体形式后,才发觉其实技术的难易程度只在跟你对底层代码原理掌握的熟练度有关。说简单些,很多东西其实我们都会,只是在各个框架或技术中我们没有考虑到的东西别人都考虑周全!比如你若对socket有一定的了解并懂得xml...

weixin_30413739的博客 166

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

iOS XMPP Messenger 框架教程

iOS XMPP Messenger 框架教程 项目介绍 xmpp-messenger-ios 是一个基于 XMPP 协议的 iOS 消息传递框架,由 ProcessOne 开发并维护。该框架允许开发者快速构建支持即时通讯的 iOS 应用程序。它集成了 XMPP 协议的核心功能,并提供了易于使用的 API 接口。 项目快速启动 安装依赖 首先,确保你已经安装了 CocoaPods。然后在你的项目目...

gitblog_00419的博客 538

iOS - XMPP 的使用

iOS - XMPP 的使用 本文目录 1、XMPP2、XMPPFramework 框架简介3、XMPPFramework 框架使用4、XMPPFramework 实现简单聊天5、XMPPFramework 快速登录6、XMPPFramework 重连以及其他问题 回到顶部 1、XMPP XMPP 是一个基于 Socket 通信的即时通

jianghai的博客 767
上一篇: iOS 8以及iphone6 6+适配相关
下一篇: NSLayoutConstraint
yesjava
博客等级 码龄19年 69粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值