首先我们自己做一个的IOS客户端程序

先看一下我们完成的效果图

首先下载xmppframework这个框架

点ZIP下载

接下来,用Xcode新建一个工程

将以下这些文件拖入新建工程中

加入framework

到这里我们就全部设好了,跑一下试试,看有没有错呢

如果没有错的话,我们的xmppframework就加入成功了。

我们设置我们的页面如下图:

我们的KKViewController.h

KKViewController.m

这里的代码相信大家学过UITableView的话应该很熟悉了,如果不知道的话,就查一下UITableView的简单应用学习一下吧

接下来是登录的页面

KKLoginController.m

下面是聊天的页面

这里着重的还是UITableView

KKChatController.m

这些都比较简单,相信大家应该都能看得懂

为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中

在AppDelegate.m下这几个方法为:

这几个是基础方法,接下来就是XMPPStreamDelegate中的方法,也是接受好友状态,接受消息的重要方法

这里面有两个委托方法,一个是用户列表委托,还有一个就是消息委托,用户列表委托主要就是取得在线用户,更新用户TableView,消息委托就是取得好友发送的消息,并更新消息TableView,当然这两个TableView是在不同的Controller中的

定义完两个委托,我们就要在不同的Controller中实现这两个委托了

在好友Controller中实现<KKChatDelegate>并写入如下方法

在viewDidLoad中加入

这两行代码,让好友列表的委托实现方法在本程序中

在viewWillAppear中加入

判断本地保存的数据中是否有userId,没有的话就跳转到登录页面

这里最重要的就是connect了,这一句话就是登录这是我们要显示的消息,每一条消息为一条字典

接下来就是每一条消息的显示了

了,成功的话,页面就会显示好友列表了。

下面是聊天Controller了

在KKChatController.h中加入

这是我们要显示的消息,每一条消息为一条字典

接下来就是每一条消息的显示了

跟上面好友Controller一样,这里我们也需要XMPPStream

在ViewDidLoad中加入

设定消息委托由自己来接收和处理

接下来最重要的就是发送消息了

下面是我们主要介绍如何来美化我们的聊天程序,看一下最终效果呢,当然源程序也会在最后放出

好了,我们来看一下我们写的程序

这里我们自定义了TableViewCell

一行是显示发布日期,一行是显示发送的消息,还有一个是背景

定义好,在UITableViewCell中将Cell改成我们自己定义的Cell

在这个Cell里设置了发送的消息的背景图和接收消息的背景图

这里在字典里有一个"time"

这是我们接收和发送消息的时间

在AppDelegate.m中

将我们收到消息的内容也做一下调整

最后我们再设置一下每一行显示的高度

,对了,在发送消息的时候,别忘了也加上

iOS-XMPP客户端的更多相关文章

  1. ios xmpp开发应用后台模式接收聊天信息处理方案

    ios xmpp开发应用后台模式接收聊天信息 最近在使用xmppframwork来实现一个聊天应用,碰到了一个问题,应用进入后台以后,就接收不到消息了: 怎么样才能使应用被切到后台时,应用中的网络连接 ...

  2. iOS - XMPP 的使用

    1.XMPP XMPP 是一个基于 Socket 通信的即时通讯的协议,它规范了即时通信在网络上数据的传输格式,比如登录,获取好友列表等等的格式.XMPP 在网络传输的数据是 XML 格式. 开发架构 ...

  3. iOS - XMPP Openfire 服务器的搭建

    前言 提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提前准备好的软件: jdk-8u91-macosx-x64.dmg mysql-5.7 ...

  4. XMPP 客户端和服务端

    GPLv2授权不能商用 XMPP协议的客户端软件列表 http://zh.wikipedia.org/wiki/XMPP%E5%8D%94%E8%AD%B0%E7%9A%84%E5%AE%A2%E6% ...

  5. iOS XMPP 通信协议实现 图形化直观感受

    第一次随笔,实在不知写点什么有用的东西,那就分享一下本人最近的研究所得吧! 是关于iOS-XMPP-通信协议的实现,具体代码比较复杂,三言两句也实在难表达清楚,网上已有很多关于iOS XMPP协议的讲 ...

  6. XMPP客户端开发(1)--连接和登录

    Smack可用于XMPP客户端的开发,下载Smack,将相关jar文件导入后,即可以开始XMPP客户端的开发. 以下代码实现了客户端连接Tigase服务器,并根据用户名和密码登录. package X ...

  7. 一元云购完整源码 云购CMS系统 带安卓和ios手机客户端

    看起来不错的一套一元云购CMS源码,源码包里面带了安卓和ios手机客户端,手机客户端需要自己反编译.    这里不做功能和其它更多的介绍,可以自己下载后慢慢测试了解.    下面演示图为亲测截图< ...

  8. 2016最新一元云购完整源码 云购CMS系统 带安卓和ios手机客户端 源码免费分享

    原文转自:http://www.zccode.com/thread-724-1-1.html 该资源说明: 看起来不错的一套一元云购CMS源码,源码包里面带了安卓和ios手机客户端,手机客户端需要自己 ...

  9. iOS xmpp协议实现聊天之openfire的服务端配置(一)

    今天弄这个openfire服务端的配置直接苦了一逼,只是好在最后最终配置好了.首先感谢@月光的尽头的博客给了我莫大的帮助. 切入正题,首先说一下iOS xmpp协议实现聊天openfireserver ...

  10. ios xmpp 发送语音图片解决方案

    ios xmpp 发送语音,图片解决方案,有需要的朋友可以参考下. 目前做IM多是用的xmpp. 因为项目需求需要实现语音和图片的发送. 发送语音图片有三种方法. 1,xmpp smack.文件传输方 ...

随机推荐

  1. Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

    详情见:http://blog.csdn.net/chindroid/article/details/8000713

  2. CSS 收集

    margin:0 auto margin后面如果只有两个参数的话,第一个表示top和bottom,第二个表示left和right, 因为0 auto,表示上下边界为0,左右则根据宽度自适应相同值(即居 ...

  3. LInux软件的卸载和安装(转)

    在linux环境中,尤其是cenos中安装过一些软件,一般是二进制安装与源码安装,现小结一下linux中的安装与卸载. 一.通常Linux应用软件的安装包有三种: 1) tar包,如software- ...

  4. 常用的正则表达式(例如:匹配中文、匹配html)(转载)

    匹配中文字符的正则表达式: [u4e00-u9fa5]    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  匹配双字节字符(包括汉字在内):[^x00-xff]  评注:可以用来计算字符串 ...

  5. 解决:操作无法完成(错误0x00000709)。再次检查打印机名称,并确保打印机已连接到.

    就是重启一下服务器端的Print Spooler服务就行了,这么简单! [控制面板 -  服务 -  Print Spooler]

  6. centos=>gsutil,iptables

    sudo apt-get remove --purge gsutil sudo easy_install -U pip  sudo pip2 install gsutil gsutil ls gs:/ ...

  7. 怎么用navicat自动备份mysql数据库

    打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”.   双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务.   点击保存, ...

  8. 黑马程序员——OC语言Foundation框架 结构体

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)结构体 NSRange(location length) NSPoi ...

  9. struts2内Action方法调用

    1.struts2流程: jsp页面-->web.xml-->struts.xml-->user.acrion-->UserAction.java 中的execute()--r ...

  10. php中常用的运算符

    运算符 运算符是告诉PHP做相关运算的标识符号. PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. 1.变量名记得加“$” 符: 2. ...