- 浏览: 239731 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (118)
- Ruby/ROR (4)
- Mac (28)
- 我的见闻触发你我的灵感 (1)
- 创业 (1)
- JOSSO (2)
- XML (2)
- OpenRemote (1)
- 娱乐 (2)
- 版权/License (1)
- Java/Spring (4)
- 调试 (1)
- 路由器 (2)
- 技术博客 (21)
- 虚拟机 (1)
- Javascript (6)
- SVN (2)
- HA(Home Automation) (0)
- Android (2)
- iPhone/iPod (23)
- iPad (22)
- iOS公共 (28)
- Windows7 (1)
- 服务器技术 (2)
- 其它 (1)
- Shell (1)
- 数据库 (1)
- 问题总结 (1)
最新评论
-
zjjzmw1:
...
转载:IOS开发之——objectForKey与valueForKey在NSDictionary中的差异 -
hldfxh:
解决了我的问题
JSON Lib, XML转JSON字符串不要namespace,以及处理特殊xml属性"type" -
herry68:
可以给我提供以下你的这个NSData+Base64.h类吗
图片转base64串及反转回图片 -
herry68:
我用这个方法把图片转换成nsstring成功了,但是从nsst ...
图片转base64串及反转回图片 -
hibluse:
handy.wang 写道hibluse 写道我已经设置了WA ...
基于FMDB-SQLite的App数据库性能优化
转载自:http://blog.csdn.net/kangkangz4/article/details/7740135
介绍完了服务器,这篇我们就要介绍重点了,写我们自己的IOS客户端程序
先看一下我们完成的效果图
首先下载xmppframework这个框架,下载
点ZIP下载
接下来,用Xcode新建一个工程
将以下这些文件拖入新建工程中
加入framework
并设置
到这里我们就全部设好了,跑一下试试,看有没有错呢
如果没有错的话,我们的xmppframework就加入成功了。
我们设置我们的页面如下图:
我们的KKViewController.h
[java]
view plain
copy
- # import <UIKit/UIKit.h>
- @interface KKViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>
- @property (strong, nonatomic) IBOutlet UITableView *tView;
- - (IBAction)Account:(id)sender;
- @end
KKViewController.m
[java]
view plain
copy
- # import "KKViewController.h"
- @interface KKViewController (){
- //在线用户
- NSMutableArray *onlineUsers;
- }
- @end
- @implementation KKViewController
- @synthesize tView;
- - (void )viewDidLoad
- {
- [super viewDidLoad];
- self.tView.delegate = self;
- self.tView.dataSource = self;
- onlineUsers = [NSMutableArray array];
- // Do any additional setup after loading the view, typically from a nib.
- }
- - (void )viewDidUnload
- {
- [self setTView:nil];
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- }
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
- }
- - (IBAction)Account:(id)sender {
- }
- #pragma mark UITableViewDataSource
- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
- return [onlineUsers count];
- }
- -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
- static NSString *identifier = @ "userCell" ;
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
- }
- return cell;
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
- return 1 ;
- }
- #pragma mark UITableViewDelegate
- -(void )tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
- }
- @end
接下来是登录的页面
KKLoginController.m
[java]
view plain
copy
- - (IBAction)LoginButton:(id)sender {
- if ([self validateWithUser:userTextField.text andPass:passTextField.text andServer:serverTextField.text]) {
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setObject:self.userTextField.text forKey:USERID];
- [defaults setObject:self.passTextField.text forKey:PASS];
- [defaults setObject:self.serverTextField.text forKey:SERVER];
- //保存
- [defaults synchronize];
- [self dismissModalViewControllerAnimated:YES];
- }else {
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@ "请输入用户名,密码和服务器" delegate:nil cancelButtonTitle:@ "确定" otherButtonTitles:nil, nil];
- [alert show];
- }
- }
- - (IBAction)closeButton:(id)sender {
- [self dismissModalViewControllerAnimated:YES];
- }
- -(BOOL)validateWithUser:(NSString *)userText andPass:(NSString *)passText andServer:(NSString *)serverText{
- if (userText.length > 0 && passText.length > 0 && serverText.length > 0 ) {
- return YES;
- }
- return NO;
- }
这里着重的还是UITableView
KKChatController.m
[java]
view plain
copy
- -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
- return 1 ;
- }
- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
- return [messages count];
- }
- -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
- static NSString *identifier = @ "msgCell" ;
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
- }
- NSMutableDictionary *dict = [messages objectAtIndex:indexPath.row];
- cell.textLabel.text = [dict objectForKey:@"msg" ];
- cell.detailTextLabel.text = [dict objectForKey:@"sender" ];
- cell.accessoryType = UITableViewCellAccessoryNone;
- return cell;
- }
把这些都设置好以后,我们就要着重介绍XMPP了,怕太长了,接下一章吧。
评论
3 楼
zjjzmw1
2013-03-21
附带个demo 呗,分享下。
2 楼
handy.wang
2013-03-21
其实这个很简单,我只是为了做个记录。
1 楼
zjjzmw1
2012-12-17
没有效果图,就不想看了。。。。
发表评论
-
图片转base64串及反转回图片
2013-07-29 12:04 2327图片转base64串: UIImage *_ori ... -
iOS中异步函数的单元测试
2013-06-08 09:51 1508转载自:http://blog.csdn.net/diyag ... -
拆数算法(ObjectiveC递归实现)
2013-03-21 10:45 2077把一个大数拆成几个指定的小数相加,以下实现方式性能很差仅供参考 ... -
复杂数据类型变量的引用计数与block以及__block修饰符的关系
2012-12-14 17:05 4887以下结论是结合参考资料和实验得来,不对地方请大家纠正: ... -
基于FMDB-SQLite的App数据库性能优化
2012-12-14 16:48 111741)如果数据库配置成为串行模式:sqlite3_con ... -
Run Loop
2012-08-24 11:12 1250来源:http://www.cnblogs.com/scorp ... -
转载:IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
2012-08-23 15:49 1329来源:http://blog.csdn.net/pjk1 ... -
深拷贝和浅拷贝
2012-08-23 15:44 956来源:http://blog.csdn.net/pjk1129 ... -
静态全局变量的内存问题
2012-08-23 15:43 1171来源:http://blog.csdn.net/pjk1 ... -
如何将iPhone模拟器的分辨率调整至1136x640?
2012-08-09 10:01 3133来源:http://www.weiphone ... -
AtoS查看iOS Crash log中的16进制代码日志
2012-08-02 17:21 3417注意:crash_log一定要和打包时的archive对应上; ... -
Objective-c 中 nil, Nil, NULL和NSNull的区别
2012-08-02 10:40 948来自:http://blog.csdn.net/yhawaii ... -
XCODE4.3.2与真机联调时,console里输出中文乱码
2012-07-19 13:34 1314修改项目的scheme的info,把debugger由LLDB ... -
NSAutoReleasePool使用中drain和release的区别
2012-05-30 14:50 1695虽然ARC引入之后NSAutoReleasePool的使 ... -
Network Link Conditioner in Lion
2012-05-21 14:46 1912Network Link Conditioner in ... -
PushMeBaby中的神秘错误代码OSStatus的实际含义
2012-05-03 09:31 76221)查看SecureTransport.h中 / ... -
NSDefaultRunLoopMode vs NSRunLoopCommonModes
2012-04-20 10:14 5327A run loop is a mechanism th ... -
NSParameterAssert
2012-04-20 09:38 2650NSParameterAssert Valida ... -
线程内sleep
2012-04-19 09:20 1063[NSThread sleepForTim ... -
转换Xcode里打印的unicode编码日志
2012-04-18 20:33 18031)打开Terminal 2)输入python 3)pri ...
相关推荐
在iOS开发中,XMPP被用来实现应用程序中的聊天功能,允许用户进行一对一或群组的实时通信。这个"xmpp for ios"的项目是一个示例,旨在演示如何在iOS应用中集成并有效利用XMPP框架,同时解决了其他XMPP demo中存在的...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛应用于即时通讯软件,如聊天应用程序。在这个特定的场景中,我们关注的是XMPP在实现语音聊天功能时的一些关键技术点和思路。 ...
来源:Licence:Eclipse Public License平台:iOS设备:iPhone / iPad作者:Dawn_wdf 基于xmpp的即时通讯(需要配置openfire)。包括注册新用户,连接,获取朋友列表,文字通讯和语音通讯。其中保存朋友列表和...
在iOS开发中,XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,常用于实现即时通讯应用。XMPP允许用户进行双向、基于XML的数据交换,从而实现聊天、文件传输等功能。然而,为了在...
本篇文章将围绕标题所提及的开源项目“iChabber”进行详尽的解析,它是一个专为iPod Touch和iPhone设计的简单GTalk和Jabber聊天客户端。通过学习这个项目,开发者可以了解到如何在iOS平台上实现即时通讯功能,特别是...
XMPP是一种基于XML的开放标准,用于实时通讯和数据传输,常用于实现聊天、群聊、在线状态显示等功能。在iPhone上使用XMPP进行IM开发时,`XMPPFramework`是一个非常重要的开源库。以下将详细介绍`XMPPFramework`以及...
XMPP基于XML,提供了一种实时通信和存在管理的框架,支持一对一、一对多以及多对多的交流,非常适合于即时通讯应用。它允许用户发送文本消息、文件、位置等信息,并支持群聊、推送通知和VoIP等功能。 XMPPFramework...
“前端基于XMPPFrameWork”意味着客户端开发使用了XMPPFrameWork,这是一个面向iOS平台的XMPP库。XMPP(Extensible Messaging and Presence Protocol)是一种开放标准的即时通讯协议,它基于XML,广泛用于实时通信和...
在iOS平台上开发一款类似QQ的聊天应用程序是一项技术性较强的任务,涉及到多个技术栈的整合与应用。本项目标题“iPhone开发-qq聊天代码”表明我们将深入探讨如何在iPhone应用中集成并实现QQ聊天功能,包括支持表情...
在iOS开发领域,模仿陌陌客户端是一个非常有价值的实践项目,它可以帮助开发者深入理解移动应用的设计原理,特别是针对社交网络的应用。陌陌是一款在中国极其流行的社交应用程序,它的成功在于其独特的功能设计和...
包括Activity Manager(管理应用程序生命周期)、Window Manager(窗口管理)、Content Provider(数据共享)、View System(视图构建)、Notification Manager(通知管理)、Package Manager(程序管理)、...
TeamTalk不仅仅是一个简单的聊天工具,可能还包含了文件分享、音视频通话、群组管理等高级功能,以满足团队协作的需求。 【压缩包子文件的文件名称列表】: 1. TTAndroidClient-master:这是Android客户端的主分支...
2. **消息传输协议**:源码中可能包含自定义的或基于标准协议(如XMPP、MQTT)的消息传输机制。这些协议确保了消息的实时性、可靠性和安全性。 3. **会话管理**:用户可以创建、查看和管理不同的会话,如一对一私聊...
本项目旨在开发一个基于XMPP协议的即时聊天APP,其核心功能包括用户注册、登录、添加/删除好友、文本及多媒体聊天等,类似于QQ或微信的简化版。以下是对各个关键知识点的详细解释: **1.1 XMPP协议** XMPP是一种...
XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址...
AndroidPN作为基于XMPP的一个开源项目,提供了一套较为完整的推送解决方案,包括服务端和客户端的代码包。 - **方案三:MQTT协议** MQTT协议作为一种轻量级的发布/订阅模式的物联网传输协议,近年来也被应用于...
XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯和在线状态感知。在iOS或Android等移动平台开发XMPP应用时,常常会遇到跨平台兼容性问题,尤其是针对不同CPU...
来源:github/XMPPFrameworkLicence:BSD作者:Robbie Hanson ...这份类库就是专门为iOS和Mac所写的XMPP类库,提供了一系列的接口用于写基于XMPP的功能。这份类库是thread-safe的,基于GCD。 小编注:XMPP百度百科:
在iOS开发中,XMPPFramework是一个广泛使用的开源库,它为开发者提供了一种简单的方式来实现XMPP协议,从而构建功能丰富的聊天应用。 XMPP的核心特性包括: 1. **可扩展性**:XMPP设计为可扩展的,允许添加新的功能...