XMPP

OpenClaw实战一|企业微信AI客服数字员工:自动应答+工单创建+数据统计,零代码3天落地 OpenClaw做企业微信AI客服数字员工,真正的价值不是“能自动回复”,而是把“咨询-应答-工单-统计-复盘”全流程闭环。对中小企业来说,不用招专职AI开发、不用买昂贵客服系统,一台服务器、零代码配置,就能拥有媲美大厂的智能客服能力。 阅读详情

http://www.cnblogs.com/cokecoffe/archive/2012/08/22/2651645.html


IOS XMPP的实践

  近期一网友说一起研究XMPP协议,然后就花了点时间 研究了研究,其实也谈不上研究XMPP协议,就是简单的在IOS平台上使用而已。不过一切都得从使用开始,然后才能深入研究。

  关于XMPP的介绍,我找了些资料

简介:http://www.cnblogs.com/cokecoffe/archive/2012/08/19/2646245.html

实现:http://www.cnblogs.com/cokecoffe/archive/2012/08/19/2646280.html

比较具体的:http://wiki.jabbercn.org/index.php?title=RFC3920&variant=zh-cn

 


  

至于在IOS上的应用,参考了国外这个教程:

http://mobile.tutsplus.com/tutorials/iphone/building-a-jabber-client-for-ios-interface-setup/

从从服务器搭建,到客户端实现,一共有四个步骤。服务器搭建基本没有什么大问题,细心一点,关键是剩下的三步。

教程使用的xmpp framework不是最新的,所以如果你现在从Github上下载最新的XMPP Framework的话,应该是会出不少问题。

比如就说导入框架的时候,教程简单的说把几个文件夹托进去就可以。但是等实际操作的时候,会发现,这么做的话会引起很多编译报错。

所以呢,最好按照https://github.com/cokecoffe/XMPPFramework说明里的

Getting started using XMPPFramework on iOS

一步步来导入Framework,记住每做一步都要编译一下验证是否没有编译报错,要不等把所有框架都加进去后,再编译,到时候错误很难查出,我就在这上面浪费了不少时间。

 

剩下就是客户端的创建了。先大概了解下程序的框架,主要是有三个界面,一个登陆,一个好友列表,一个聊天界面。

程序与服务器交互,我们把协议实现在AppDelegate里,这样方便在任何类中调用。

看图吧:

关键部分就是XMPPDelegate协议的实现部分,简单的列举一下要使用到的方法:

复制代码
 1 1.关于连接的
 2 //此方法在stream开始连接服务器的时候调用
 3 - (void)xmppStreamDidConnect:(XMPPStream *)sender
 4 //此方法在stream连接断开的时候调用
 5 - (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error;

 6 2.关于验证的
 7 //验证失败后调用
 8 - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
 9 //验证成功后调用
10 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender


11 3.关于通信的
12 //收到消息后调用
13 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
14 //接受到好友状态更新
15 - (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence
复制代码

 


 

之后就是具体去实现了。我在实现过程遇到了各种问题,虽然不大,但是很不好解决。因为资料甚少。

下面是我遇到的几个问题:

1.在收到消息后,

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

会被调用,然后就是解析message,提取消息的类型、内容等信息。

按教程来,等好友发送消息过来的时候,提取body的时候,会发现会挂掉。打印出message没有body一项。

这是因为好友的聊天输入框激活的时候就会给我们发送消息,这个时候的消息里没有body一项,所以[message elementForName:@"body"]返回nil,然后我又把nil添加到了NSDictionary里,所以挂掉了。

后来看官方的Demo里,有这样一个方法[message isChatMessageWithBody],方法作用正如其名。

所以在转发消息之前,先判断下,就ok。

 

2.教程里的好友页面,-(void)viewDidAppear:(BOOL)animated方法里会调用connect。

也就是每次好友页面出现都会connect。这里虽然不会导致程序crash掉,但是stream会重复建立,有可能消息会收不到。

所以我在connect方法里加以判断,如果stream!=nil,直接return。

 

3.这个问题就比较诡异了,我发现我只要给好友发送消息,对方就显示我已经下线了。

找了许久,就查发送消息那块,死活没问题啊。一个星期后,偶然看起来好友列表里显示的好友地址不对,原来,好友名和域名少了个@符号。

结果导致了这诡异的问题。真是粗心。

 


 

基本上就总结了这些,因为我写再多也不如自己亲身实验,所以大家多多实验,遇到问题可以交流。本人比较在乎文章产生的影响,不希望误导别人,也不希望被人误导。所以大家如果读到此文章,要慎重阅读,并且敢于提出质疑。如果这里有什么不妥的地方,欢迎指出。

国内也有几个教程,基本也是参考上面提到的那个国外的教程。大同小异,写的也不错,可以参考。

http://blog.youkuaiyun.com/kangkangz4/article/details/7740135

 XMPP Framework 框架下载 https://github.com/cokecoffe/XMPPFramework


SAP B1中文培訓教材_SDK 公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说 立即下载

相关推荐

基于STM32平衡小车设计

随着智能硬件的发展,基于STM32的两轮智能平衡车作为一种新型的智能移动工具,具备较高的应用价值。本文旨在设计并实现一款基于STM32微控制器的智能平衡车系统,提升其稳定性和操控性,探索如何通过传感器数据和控制算法实现精确平衡控制。 本设计基于STM32微控制器,选择了STM32F103系列作为核心控制器,具有足够的处理能力和丰富的外设接口。系统通过MPU6050传感器获取三轴加速度和三轴陀螺仪数据,实现实时姿态检测。电机驱动部分采用合适的驱动模块,能够控制两个直流电机,并支持PWM调速。设计中还包括OL

m0_74026776的博客 2730

IOS XMPP的实践

近期一网友说一起研究XMPP协议,然后就花了点时间 研究了研究,其实也谈不上研究XMPP协议,就是简单的在IOS平台上使用而已。不过一切都得从使用开始,然后才能深入研究。   关于XMPP的介绍,我找了些资料 简介:http://www.cnblogs.com/cokecoffe/archive/2012/08/19/2646245.html 实现:http://www.cnbl

黑菜妞妞的专栏 1152

S7-1200PLC期末复习题(第七章)

A.0 B.1 C.4 D.-4 A、CV = 0 B、CV = 1 C、CV < 4 D、CV >= 4A、0,0 B、3,0 C、1,1 D、3,1 A、0 B、1 C、先是1,再变为0 D、先是0,再变为1置位输出:常开触点M0.0闭合,Q0.0变为1状态并保存该状态,即使M0.0断开,Q0.0也保持1状态。 复位输出:常开触点M0.1闭合时,Q0.0变为0状态并保持该状态,即使M0.1断开,Q0.0也保持为0状态。 A、1 B、0 C、5 D、10RESET_BF指令需要两个参数,第一个是复位的位数

qq_52251819的博客 4413

IOS -- xmppStreamDidDisconnect: Error Domain=GCDAsyncSocketErrorDomain Code=7 解决方案

在使用XMPPFramework 的时候,每次发送消息调用 [xmppStream sendElement:aMessage]; 就会调用xmppStreamDidDisconnect 这个代理。报错如下: xmppStreamDidDisconnect: Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by r

Gmonday 一个帅哥的专栏 10000

Allegro16.6详细教程(二)

3-D Viewer,可以直接在allegro中看到board file的3-D顯示效果。3-D Viewer對於PCB Editor Products,只有環境變數中的OpenGL顯示功能開啟後才有效,而對於APD/SiP是無效的。2.3-D viewer是在一個獨立的視窗中打開的。3-D environment環境支援多種顯示內容的過濾,取景視角和顯示效果的選項,透過遊標可以直接控制放大,移動,翻轉等操作。

axingxiansen的博客 1917

Rancher入门到精通 - Nginx Ingress 配置指南

Rancher 是一个开源的容器管理平台,它提供了一套完整且易于使用的工具来部署、管理和扩展容器化应用。而 Nginx Ingress 则是一个常用的开源 Ingress 控制器,用于将外部请求流量导入到 Kubernetes 集群中的服务。在开始之前,请确保您已经正确安装了 Rancher 平台和 Nginx Ingress 控制器。

TechInk的博客 1311

【iOS XMPP】使用XMPPFramewok(四):收发消息

收发消息   接收消息 通过实现  - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message; 方法 当接收到 标签的内容时,XMPPFramework 框架回调该方法 根据 XMPP 协议,消息体的内容存储在标签 内 - (void)xmpp

天下只此一家的专栏 981

如何对正射影像DOM(卫星影像、无人机航拍影像)进行拼接、合并以及去黑边(附 Global Mapper Pro 24.0 安装包(中文注册版))

为什么要对正射影像DOM进行拼接?影像去黑边、影像拼接的操作和步骤。

从地图看世界的专栏 4298

xmpp错误日志集锦

xmppStreamDidDisconnect: Error Domain=NSPOSIXErrorDomain Code=61 "Connection refused" UserInfo=0x16d5b5a0 {NSLocalizedFailureReason=Error in connect() function, NSLocalizedDescription=Connection ref

SoulHao的专栏 3946

A*寻路算法的最简单通俗讲解

为什么我的眼里常含泪水?因为我有一个算法不会。为了节约点眼泪,今天我们就来介绍著名的A*寻路算法(或简称A*算法)。 Peter Hart, Nils Nilsson 和 Bertram Raphael 在1968年首次提出了著名的A*算法。A*算法其实是Dijkstra最短路径算法的一种扩展。不一样的是,在A*算法中我们需要使用Heuristics 来导引搜索过程,以期达到更好的表现。 ...

白马负金羁 2万+

手把手教你学Simulink实例--使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

MHD0815的博客 298

关于XMPP聊天遇到的问题

准备做这时还没兴奋的,遇到的问题也蛮纠结的,其他的还好主要是在发送这块遇到了问题 总结一下,发送消息时一定要注意,Chat chat = cm.createChat("user",null),此处的user是定要是目标用户名@主机名,例如xxxx@192.168.0.xxx ,否则对方收不到任何消息,也不报错,这问题搞了半天终于解决,记录一下

waitinghc的专栏 549

【SpringBoot 3.x 第51节】带你玩转 GraalVM Native Image:启动快到飞起,内存省到心疼,你还不试试?

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1303

Xmpp client重连机制

目录 1 XMPP存在的意义.... 4 2 带防火墙的XMPP部署.... 4 3 XMPP关系图.... 5 4 XMPP连接请求消息序列.... 6 5 CPE端XMPP Client重连机制.... 6 5.1连流程图... 7 5.2重连时间间隔... 7 5.3部分重连代码... 7 六 参考文档.... 8 1 XMPP存在的意义 随着TR-069可以管理的CPE设备越来越多,然而位于NAT或启用防火墙的网关后面的设备(可能使用网...

Suvine的专栏 2491

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

XMPP协议详解

1、XMPP的基本网络结构是怎样? xmpp中定义了三个角色,客户端、服务器和网关;通讯可以在这三者之间的任意两者中进行双向进行。服务器同时承担了客户端的信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。 2、XMPP协议的网络架构: ...

caixiaobai_1的博客 7881

ssm框架搭建

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

XMPP框架 微信项目开发之XMPP简介——XMPP的起源,工作原理,使用方法

即时通讯技术简介:即时通讯技术(IM-  Instant Messaging)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友再其中输入信息并让交谈双方都看到交谈的内容。 有许多的IM系统,如AOL、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议 协议用来说明信息在网络上如何传输,如果有了统一

3319

XMPP学习1-认识XMPP

认识XMPP

Nassue_sn的博客 1007

gloox与xmpp学习

 在使用gloox之前,有必要先提一下XMPP协议这个东东。 XMPP协议是一个基于互联网的即时通信标准协议。它采用XML技术,以文本的方式传输即时消息。支持动态自定义扩展应用。与传统的网络协议相比,如QQ等,XMPP协议并不是一个基于二进制方式实现的协议,而是基于XML技术的文本方式,也就是说如果不采用加密技术的话,是可以直接查看发送的消息的。XMPP协议通过定义一些XML的节点关键字,

追求无止尽 2006

XMPP简介

官网:https://xmpp.org XMPP简介 XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。 XMPP是一组用于即时消息,在线状态,多方聊天,语音和视频呼叫,协作,轻量级中间件,内容联合以及XML数据通用路由的开放技术。 XMPP全称:Extensible Messaging and Presence...

qingdatiankong的博客 6021

go-xmpp: 构建基于XMPP协议的应用程序

go-xmpp: 构建基于XMPP协议的应用程序 go-xmppgo xmpp library (original was written by russ cox )项目地址:https://gitcode.com/gh_mirrors/gox/go-xmpp 在本文中,我们将向您介绍 这个开源项目,它是一个用于构建基于XMPP协议的应用程序的Go库。 什么是XMPP? XMPP(Exten...

gitblog_00047的博客 536

XMPP学习(五)XMPP简单实现

XMPP中文文档:http://wiki.jabbercn.org/ 参考博文: XMPP系列博客https://blog.youkuaiyun.com/u011619283/article/category/6402547 详细介绍XMPP类:https://www.jianshu.com/p/c196135efc45 设置后台模式(还未成功?已成功):https://blog.youkuaiyun.com/r...

夏目三三 1015

关于XMPP的简介

初次认识xmpp

qq_27437301的博客 2627

XMPP基本内容简介

即时通讯技术简介    即时通讯技术(IM)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容.有许多的IM系统,如AOL IM、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议。      协议用来说明信息在网络上如何传输,如果有了统一的传输

欢迎来到Jack的程序世界 2597

XMPP 简介

一、即时通讯简单介绍1、简单说明即时通讯技术(IM)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容有许多的IM系统,如AOL IM、Yahoo IM、 MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个

Focus Now 882

XMPP学习记录一:XMPP简介

XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。 在这四种协议中,XMPP是最灵活的。XMPP是一

jijunyuan_11109的专栏 1844
上一篇: Get Post 区别
下一篇: Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误
AndYouAndMe
博客等级 码龄12年 2粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值