`

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

 
阅读更多

转载自:http://blog.csdn.net/kangkangz4/article/details/7740135

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

分类: iPhone高级 4043人阅读 评论 (9) 收藏 举报

介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序

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



首先下载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了,怕太长了,接下一章吧。

 

分享到:
评论
3 楼 zjjzmw1 2013-03-21  
附带个demo 呗,分享下。
2 楼 handy.wang 2013-03-21  
其实这个很简单,我只是为了做个记录。
1 楼 zjjzmw1 2012-12-17  
没有效果图,就不想看了。。。。

相关推荐

    xmpp for ios

    在iOS开发中,XMPP被用来实现应用程序中的聊天功能,允许用户进行一对一或群组的实时通信。这个"xmpp for ios"的项目是一个示例,旨在演示如何在iOS应用中集成并有效利用XMPP框架,同时解决了其他XMPP demo中存在的...

    xmpp聊天部分,语音思路

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛应用于即时通讯软件,如聊天应用程序。在这个特定的场景中,我们关注的是XMPP在实现语音聊天功能时的一些关键技术点和思路。 ...

    xmpp for ios(iPhone源代码)

    来源:Licence:Eclipse Public License平台:iOS设备:iPhone / iPad作者:Dawn_wdf  基于xmpp的即时通讯(需要配置openfire)。包括注册新用户,连接,获取朋友列表,文字通讯和语音通讯。其中保存朋友列表和...

    ios开发 XMPP的libidn 支持arm64的包

    在iOS开发中,XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,常用于实现即时通讯应用。XMPP允许用户进行双向、基于XML的数据交换,从而实现聊天、文件传输等功能。然而,为了在...

    IOS源码之iChabber-Simple gtalk and jabber client for the iphone

    本篇文章将围绕标题所提及的开源项目“iChabber”进行详尽的解析,它是一个专为iPod Touch和iPhone设计的简单GTalk和Jabber聊天客户端。通过学习这个项目,开发者可以了解到如何在iOS平台上实现即时通讯功能,特别是...

    iphone 开发XMPP类型IM时需要的框架XMPPFrameWork

    XMPP是一种基于XML的开放标准,用于实时通讯和数据传输,常用于实现聊天、群聊、在线状态显示等功能。在iPhone上使用XMPP进行IM开发时,`XMPPFramework`是一个非常重要的开源库。以下将详细介绍`XMPPFramework`以及...

    iphone 开发XMPP类型IM时需要的框架XMPPFramework

    XMPP基于XML,提供了一种实时通信和存在管理的框架,支持一对一、一对多以及多对多的交流,非常适合于即时通讯应用。它允许用户发送文本消息、文件、位置等信息,并支持群聊、推送通知和VoIP等功能。 XMPPFramework...

    类似微信聊天功能,可发送文字、表情、图片、音频,后台基于OpenFire,前端基于XMPPFrameWork.zip

    “前端基于XMPPFrameWork”意味着客户端开发使用了XMPPFrameWork,这是一个面向iOS平台的XMPP库。XMPP(Extensible Messaging and Presence Protocol)是一种开放标准的即时通讯协议,它基于XML,广泛用于实时通信和...

    iPhone开发-qq聊天代码

    在iOS平台上开发一款类似QQ的聊天应用程序是一项技术性较强的任务,涉及到多个技术栈的整合与应用。本项目标题“iPhone开发-qq聊天代码”表明我们将深入探讨如何在iPhone应用中集成并实现QQ聊天功能,包括支持表情...

    模仿陌陌客户端开发_iphone

    在iOS开发领域,模仿陌陌客户端是一个非常有价值的实践项目,它可以帮助开发者深入理解移动应用的设计原理,特别是针对社交网络的应用。陌陌是一款在中国极其流行的社交应用程序,它的成功在于其独特的功能设计和...

    Android与ios对比分析

    包括Activity Manager(管理应用程序生命周期)、Window Manager(窗口管理)、Content Provider(数据共享)、View System(视图构建)、Notification Manager(通知管理)、Package Manager(程序管理)、...

    蘑菇街TeamTalk项目服务端和客户端代码

    TeamTalk不仅仅是一个简单的聊天工具,可能还包含了文件分享、音视频通话、群组管理等高级功能,以满足团队协作的需求。 【压缩包子文件的文件名称列表】: 1. TTAndroidClient-master:这是Android客户端的主分支...

    即时通讯系统IOS版本源码

    2. **消息传输协议**:源码中可能包含自定义的或基于标准协议(如XMPP、MQTT)的消息传输机制。这些协议确保了消息的实时性、可靠性和安全性。 3. **会话管理**:用户可以创建、查看和管理不同的会话,如一对一私聊...

    21851194-王玉金-iPhone应用开发技术-大作业1

    本项目旨在开发一个基于XMPP协议的即时聊天APP,其核心功能包括用户注册、登录、添加/删除好友、文本及多媒体聊天等,类似于QQ或微信的简化版。以下是对各个关键知识点的详细解释: **1.1 XMPP协议** XMPP是一种...

    XMPPframework库文件

    XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址...

    Android推送实现方案探讨

    AndroidPN作为基于XMPP的一个开源项目,提供了一套较为完整的推送解决方案,包括服务端和客户端的代码包。 - **方案三:MQTT协议** MQTT协议作为一种轻量级的发布/订阅模式的物联网传输协议,近年来也被应用于...

    XMPP 64 libidn.a

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯和在线状态感知。在iOS或Android等移动平台开发XMPP应用时,常常会遇到跨平台兼容性问题,尤其是针对不同CPU...

    XMPPFramework(iPhone源代码)

    来源:github/XMPPFrameworkLicence:BSD作者:Robbie Hanson ...这份类库就是专门为iOS和Mac所写的XMPP类库,提供了一系列的接口用于写基于XMPP的功能。这份类库是thread-safe的,基于GCD。 小编注:XMPP百度百科:

    XMPPFrameWork Iphone官网实例

    在iOS开发中,XMPPFramework是一个广泛使用的开源库,它为开发者提供了一种简单的方式来实现XMPP协议,从而构建功能丰富的聊天应用。 XMPP的核心特性包括: 1. **可扩展性**:XMPP设计为可扩展的,允许添加新的功能...

Global site tag (gtag.js) - Google Analytics