iOS 之基于XMPP的iphone聊天客户端(一)

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

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



首先下载xmppframework这个框架,下载


点ZIP下载

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

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



加入framework


并设置

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

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


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


我们的KKViewController.h

[java]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface KKViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>  
  4.   
  5. @property (strong, nonatomic) IBOutlet UITableView *tView;  
  6.   
  7. - (IBAction)Account:(id)sender;  
  8. @end  

KKViewController.m

[java]  view plain copy
  1. #import "KKViewController.h"  
  2.   
  3. @interface KKViewController (){  
  4.       
  5.     //在线用户  
  6.     NSMutableArray *onlineUsers;  
  7.       
  8. }  
  9.   
  10. @end  
  11.   
  12. @implementation KKViewController  
  13. @synthesize tView;  
  14.   
  15. - (void)viewDidLoad  
  16. {  
  17.     [super viewDidLoad];  
  18.     self.tView.delegate = self;  
  19.     self.tView.dataSource = self;  
  20.       
  21.     onlineUsers = [NSMutableArray array];  
  22.     // Do any additional setup after loading the view, typically from a nib.  
  23. }  
  24.   
  25. - (void)viewDidUnload  
  26. {  
  27.     [self setTView:nil];  
  28.     [super viewDidUnload];  
  29.     // Release any retained subviews of the main view.  
  30. }  
  31.   
  32. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  33. {  
  34.     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);  
  35. }  
  36.   
  37. - (IBAction)Account:(id)sender {  
  38. }  
  39.   
  40. #pragma mark UITableViewDataSource  
  41.   
  42. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
  43.       
  44.     return [onlineUsers count];  
  45. }  
  46.   
  47. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
  48.       
  49.     static NSString *identifier = @"userCell";  
  50.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];  
  51.     if (cell == nil) {  
  52.         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];  
  53.     }  
  54.       
  55.       
  56.     return cell;  
  57.       
  58.       
  59. }  
  60.   
  61. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
  62.       
  63.     return 1;  
  64. }  
  65.   
  66. #pragma mark UITableViewDelegate  
  67. -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{  
  68.       
  69.       
  70. }  
  71.   
  72.   
  73. @end  
这里的代码相信大家学过UITableView的话应该很熟悉了,如果不知道的话,就查一下UITableView的简单应用学习一下吧

接下来是登录的页面


KKLoginController.m

[java]  view plain copy
  1. - (IBAction)LoginButton:(id)sender {  
  2.       
  3.     if ([self validateWithUser:userTextField.text andPass:passTextField.text andServer:serverTextField.text]) {  
  4.           
  5.         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
  6.         [defaults setObject:self.userTextField.text forKey:USERID];  
  7.         [defaults setObject:self.passTextField.text forKey:PASS];  
  8.         [defaults setObject:self.serverTextField.text forKey:SERVER];  
  9.         //保存  
  10.         [defaults synchronize];  
  11.           
  12.         [self dismissModalViewControllerAnimated:YES];  
  13.     }else {  
  14.         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"请输入用户名,密码和服务器" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];  
  15.         [alert show];  
  16.     }  
  17.   
  18. }  
  19.   
  20. - (IBAction)closeButton:(id)sender {  
  21.       
  22.     [self dismissModalViewControllerAnimated:YES];  
  23. }  
  24.   
  25. -(BOOL)validateWithUser:(NSString *)userText andPass:(NSString *)passText andServer:(NSString *)serverText{  
  26.       
  27.     if (userText.length > 0 && passText.length > 0 && serverText.length > 0) {  
  28.         return YES;  
  29.     }  
  30.       
  31.     return NO;  
  32. }  
下面是聊天的页面


这里着重的还是UITableView

KKChatController.m

[java]  view plain copy
  1. -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
  2.       
  3.     return 1;  
  4. }  
  5.   
  6. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
  7.     return [messages count];  
  8. }  
  9.   
  10. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
  11.       
  12.     static NSString *identifier = @"msgCell";  
  13.       
  14.     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];  
  15.       
  16.     if (cell == nil) {  
  17.         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];  
  18.     }  
  19.       
  20.     NSMutableDictionary *dict = [messages objectAtIndex:indexPath.row];  
  21.       
  22.     cell.textLabel.text = [dict objectForKey:@"msg"];  
  23.     cell.detailTextLabel.text = [dict objectForKey:@"sender"];  
  24.     cell.accessoryType = UITableViewCellAccessoryNone;  
  25.       
  26.     return cell;  
  27.       
  28. }  
这些都比较简单,相信大家应该都能看得懂

把这些都设置好以后,我们就要着重介绍XMPP了,怕太长了,接下一章吧。

IOS XMPP 聊天程序客户端 关于Jabber的XMPP聊天程序客户端,详细见http://blog.youkuaiyun.com/kangkangz4/article/details/7750765 立即下载

相关推荐

xmpp仿qq完整iOS项目

代码很详细,很新。完整应用xmpp仿qq,亲测包含后端xmpp服务器在内可用。需要的同学可以自己下载再改后端xmpp主机ip即可直接使用

[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)

介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序 先看一下我们完成的效果图 首先下载xmppframework这个框架,下载 点ZIP下载 接下来,用Xcode新建一个工程 将以下这些文件拖入新建工程中 加入framework 并设置 到这里我们就全

黑菜妞妞的专栏 1027

xmpp协议下载

NULL 博文链接:https://tw5566.iteye.com/blog/605199

基于XMPP协议的简单IM实现(iOS)(含Demo)

进入正题前,首先感谢下 @nomousewch 和 @kangkangz4 两位在我学习过程中对我的帮助,正是参见了两位的Blog,我才完成对XMPP协议的初步学习。 若想了解XMPP协议的简介,请查看 @nomousewch 的Blog。以下主要讲解我如何实现一个基于XMPP的简单即时聊天Demo。 一、XMPP服务器 首先我们需要一个XMPP服务器,在此Demo中,我采用主机作为

wwmusic的专栏 1万+

基于python的电商评论文本分析

本文基于京东平台安井手抓饼2000余条评论数据,运用Python文本分析技术(包括分词、词频统计、LDA主题模型等)探究消费者评价特征。研究发现:1)产品评价聚焦口味("好吃")、性价比("一分钱")和便捷性("早餐");2)京东物流服务获得高度认可;3)销售旺季集中在11月至次年1月。分析揭示了速冻食品消费者的核心关注点,为商家优化产品与服务提供数据支持,同时展示了文本挖掘技术在电商评论分析中的实用价值。

weixin_50902344的博客 8346

RK3576+IMX415 MIPI摄像头零拷贝显示系统

MIPI CSI-2是嵌入式视觉系统中主流的高速图像传感器接口标准,其核心价值在于低延迟、高带宽与硬件级DMA直通能力。基于V4L2子系统与DRM/KMS驱动栈,可构建从传感器RAW数据到帧缓冲区的零拷贝通路,显著降低CPU负载并提升实时性。该技术广泛应用于工业检测、边缘AI推理前数据接入及多路同步采集等场景。本文以Rockchip RK3576 SoC和索尼IMX415传感器为典型组合,详解MIPI物理层适配、内核驱动集成、GStreamer零拷贝管道搭建及systemd服务化部署,覆盖从硬件信号完整性到

weixin_36047538的博客 216

[iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端二)

接上一章的,这一章我们着重介绍XMPP 为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中 在AppDelegate.m下这几个方法为: -(void)setupStream{ //初始化XMPPStream xmppStream = [[XMPPStream alloc] init]; [xmppStream addDe

kangkangz4的专栏 6万+

高通CamX架构解析(一)——核心组件与数据流设计

本文深入解析高通CamX相机架构的核心组件与数据流设计。CamX采用模块化与数据驱动思想,将复杂处理流程拆解为Node、Pipeline、Session等独立组件,并通过CHI层实现硬件接口与定制功能的分离。文章详细阐述了从请求下发到结果返回的完整数据流,并提供了实用的调试与分析指南,帮助开发者理解这一高效、灵活的现代相机架构。

k8l9m0n的博客 235

[iPhone高级]基于XMPP的iOS聊天客户端程序(iOS端一)

介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序 先看一下我们完成的效果图 首先下载xmppframework这个框架,下载 点ZIP下载 接下来,用Xcode新建一个工程 将以下这些文件拖入新建工程中 加入framework 并设置 到这里我们就全部设好了,跑一下试试,看有没有错呢 如果没有错的话,我们的

hmxiao_1983的专栏 600

QQ的TEA填充算法C#实现 By Red_angelX

注:本人只是从LUMA QQ的 Source Code里面把相应Java语言翻译成C#,纯技术研究,并没有对TC产品做任何逆向分析,不承担任何法律责任!转载请保持本文完整性网上有c/c++,vb,delphi,java,perl各种版本的tea填充算法,唯独没有C#的,这让我这种狂热喜爱C#的人如何承受,于是,花3天时间看了各种代码经历无数失败的挫折终于用C#完成了该填充算法,废话不多说,直接

Red_angelX的专栏 1万+

机器人视觉实战:用OpenCV搞定手眼标定(附完整C++代码)

本文详细介绍了使用OpenCV实现机器人视觉中的手眼标定技术,包括核心算法、工业场景优化及完整C++代码示例。通过解析坐标系转换问题,提供从数据采集到标定验证的全流程解决方案,帮助开发者在复杂工业环境中实现高精度机械臂与视觉系统的协同作业。

weixin_29306571的博客 481
上一篇: iOS 之UDID比较
下一篇: iOS 之基于XMPP的iphone聊天客户端(二)
Shicuf
博客等级 码龄16年 11粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值