基于iOS即时通讯的设计与实现
2017-03-06周翠红
周翠红
摘要:基于iOS平台即时通讯的设计与实现采用Obj-C语言,在iOS平台开发而成。采用的是iOSXMPPframework框架,开始时间更短,成本更低。为了更好的改善用户体验,本机设计了方便操作,便于用户使用的界面,能给用户在使用过程中带来舒适的感受。该APP可以进去用户的注册和登陆,以及判断该用户是否已注册。可以让用户进行好友的添加,删除,聊天等序列操作。
关键词:iOS;Objective-C;即时通讯;XMPPframework
中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2016)30-0011-02
1 引言
在如今的信息化时代,人与人之间的沟通显得尤为的重要,只有不断地与人沟通,才能使不断的发展自己,了解自己,丰富自己,提高知识水平,扩大的自己的朋友圈。原有的网络社交环境受到时间,设备,位置等许多因素的限制,已经不能满足人们随时随地沟通的需求。而智能终端和4G网络的发展,逐渐的让移动互联网成为人们交流与沟通的首选平台[1]。新形式的移动网络不仅仅可以提高沟通效率,还改善了网络环境,扩展了新的沟通形式。正是这样提高了中国在全球一定社交网络服务上的技术形象,并且在移动领域占据主导和领先地位具有重要意义[2]。腾讯自主开发了OICQ,由于当年大部分国内用户访问ICQ比较困难。OICQ在设计,稳定性,易用性和本能满足了很多国内网络用户的需要。ICQ的迅猛发展也让在桌面软件领域独步风骚的Microsoft和当时的互联网领头羊Yahoo嗅到了商机,它们当时分别推出了Yahoo Messenger、MSN Messenger和曇花一现的MS Chat。即时通讯市场的雏形开始展现出来,因为有了世界级软件公司和国际互联网大哥的加入,从此拉开了IM时代的大幕。
2 系统具体设计
基于iOS的即时通讯,主要有六个功能模块,包括用户登录、用户注册、用户聊天、查看用户好友信息、视频观看、用户个人信息查看与修改。为用户提供比较友好的人机交互的界面,方便用户与好友随时随地进行聊天。并且发现模块的精选视频让用户在休息之余,可以选择自己喜欢类型的视频观看。丰富了用户的休息时间的生活。
2.1 系统流程
该APP的开发是在OSX系统下,使用Xcode7.2为开发工具,openfire作为APP的服务器,MySql作为服务器的数据库。
整个箱项目的开发包括项目框架的搭建,服务器的配置,数据库的建立,以及前端界面的设计与实现,用户登陆与注册采用coredata存取用户数据,前端的界面设计是采用iOS的框架里面的控件进行设计。整个项目有四个主要的界面,四个主界面里有不同的界面来完善功能。该App为用户提供比较友好聊天界面,方便用户与好友进行聊天,并且观看自己喜欢类型的视频。通过结合相关的软件和及相关的书籍以及老师的指导来完成该App的开发。用户注册成功账号和密码之后可进入系统,主要功能模块如下:
2.2详细设计与实现
如图2为登陆界面是模仿微信的登陆界面。其中设置有两个textfiled输入框和两个button按钮,其中的登陆按钮使用了一个定时器来实时监听两个输入框,判断账号密码是否已经输入,如果没有输入账号密码,按钮为灰色,并且不能点击。输入之后登陆按钮为绿色,可以点击。两个textfiled分别设置他们的属性placehold为QQ号/微信号/手机号和密码。
登录界面实现的主要代码:
[MBProgressHUD showMessage:@"正在登录..."];
//将两个输入框里的值分别给enterUser,enterPassword属性
[JZQAcount defaultAcount].enterUser = self.textField.text;
[JZQAcount defaultAcount].enterPassword = self.textField1.text;
[[JZQXMPPTool sharedJZQXMPPTool] xmppEnter:^(XMPPEnterType result) {
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUD];
if (result) {
NSLog(@"%s 登录成功",__func__);
JZQTabbarViewController * tab = [[JZQTabbarViewController alloc]init];
//将根视图设置为自定义的tabbarcontroller
[UIApplication sharedApplication].keyWindow.rootViewController =tab;
[JZQAcount defaultAcount].enter = YES; //保存账号密码
[[JZQAcount defaultAcount] save];
}else
{ [MBProgressHUD showError:@"帐号或密码错误"];
}
});
}];
3界面的设计
界面要是由电子名片模块和头像模块结合开发出来的。电子名片模块提供用户的个人信息,将用户的个人信息保存在数据库里。而头像模块则将用户的头像保存起来。点击不同的信息,可以将对应的信息修改。其中头像模块是调用系统的相册,选取系统相册里面的图片。
界面实现的主要代码:
//获取用户电子名片信息
XMPPvCardTemp * vCardTemp = [JZQXMPPTool sharedJZQXMPPTool].vCard.myvCardTemp;
//第一组,将用户的头像,名字,登陆账号保存在模型里
MeModel * d = [MeModel meWithIcon:[UIImage imageWithData:vCardTemp.photo] name:vCardTemp.nickname number:@"mingzibei" vcClass:[BenrenViewController class]];
NSArray * array = @[d];
//第二组,
MeModel * d1 = [MeModel meWithIcon:[UIImage imageNamed:@"MoreMyAlbum"] name:@"相册" vcClass:[PhotoViewController class]];
MeModel * d2 = [MeModel meWithIcon:[UIImage imageNamed:@"MoreMyFavorites"] name:@"收藏" vcClass:[CollotViewController class]];
MeModel * d3 = [MeModel meWithIcon:[UIImage imageNamed:@"MoreMyBankCard"]name:@"钱包" vcClass:[MoneyViewController class]];
NSArray * array1 = @[d1,d2,d3];
MeModel * d4 = [MeModel meWithIcon:[UIImage imageNamed:@"MoreExpressionShops"] name:@"表情" vcClass:[ExpressionViewController class]];
NSArray * array2 = @[d4];
//
MeModel * d5 = [MeModel meWithIcon:[UIImage imageNamed:@"MoreSetting"] name:@"设置" vcClass:[SettingViewController class]];
NSArray * array3 = @[d5];
//用一个数组包含其他数据模型的数组
self.arr = @[array,array1,array2,array3];
4 结束语
此次开发的项目是一个基于iOS平台的手机APP,使用openfire作为本地服务器,MySql为服务器数据库,以Xcode作为开发工具,在OSX系统下开发。该App界面是模仿微信开发出来的。素材也是通过抓包的方式获取,此外的发现界面我添加了视频功能,数据是从网上的接口获取来的,界面的搭建也尽可能地做到最好,其中动画的实现让我挺满意的,可以给予用户视觉的享受。
参考文献:
[1] 达尔林普尔,纳斯特.Objective-C基础教程[M].北京:人民邮电出版社,2009:231-255.
[2] 沃伦.iOS应用开发[M].北京:人民邮电出版社,2014:132-142.
[3] 熊斌.iOS开发从入门到精通[M].北京:希望电子出版社,2012:58-77.
[4] 姜承尧.MySQL技术内幕:SQL编程[M].北京:机械工业出版社,2012:46-67.
[5] 杜江.PHP5与MySQL5 Web开发技术详解[M].北京:电子工业出版社,2007:41-55.
[6] 王石,杨英娜.精通PHP+MySQL应用开发[M].北京:人民邮电出版社,2006:12-23.
[7] 贾素来.常见动态网页技术比較[J].大众科技,2008(9).
[8] 张绪旺.互联网创新加速服务贸易增长[N].北京商报,2012,5,31.
[9] Luke Welling.PHP and MySQL Web Development(原书第四版)[M].北京:机械工业出版社,2009:88-90.