Software Engineering and Applications
Vol.05 No.03(2016), Article ID:17775,8 pages
10.12677/SEA.2016.53021

The Social Software Application Based on iOS

Menglan Ge, Jiao Jin, Yue Zhao, Tingting Chu, Mengqi Li, Dexiang Zhang, Chengcheng Ren*

School of Electrical Engineering and Automation, Anhui University, Hefei Anhui

Received: May 30th, 2016; accepted: Jun. 10th, 2016; published: Jun. 13th, 2016

Copyright © 2016 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

ABSTRACT

This paper analyzes the purpose and significance of the project from the development of the iOS system, and introduces the development environment Xcode use of the project, and the development and superiority of the software swift language. At last, the software is tested, which shows the process of the software. Through this App, users can share their own work experience; it is more convenient and fast to communicate with others; and users can make like-minded friends, to enhance the life experience of the user side.

Keywords:App, iOS System, Swift Language

基于iOS的App社交软件

葛孟兰,金娇,赵悦,储婷婷,李梦琪,张德祥,任乘乘*

安徽大学电气工程与自动化学院,安徽 合肥

收稿日期:2016年5月30日;录用日期:2016年6月10日;发布日期:2016年6月13日

摘 要

本论文从iOS系统的发展状况、研究前景分析了项目的目的和意义。介绍了项目的开发环境Xcode的用法,软件swift语言的发展和优越性。最后进行了软件的测试,展示了本软件的使用流程。通过本App,用户可以分享自己的工作生活经验,更加方便快捷的与别人交流,并交到志同道合的朋友,提升了用户方方面面的生活体验。

关键词 :App,iOS系统,Swift语言

1. 引言

21世纪信息飞速发展,各种信息通讯工具鳞次栉比、层出不穷,智能手机、手提电脑、平板等等更新换代的频率越来越快,极大地方便并丰富了人们的工作与生活。为顺应时代发展潮流,增强创新能力,展现新时代大学生的人文科技素养和积极向上风貌,本团队开发一款新型软件交流平台。通过此App,用户可以寻找到自己喜爱的书籍,并通过评分和他人推荐发现更多可能喜爱的好书籍,为实现个性化与独立化,此App并提供个人登录账号,用户可以分享自己的读书心得并建立起个人的书库。任何系统的设计开发都是一个不断改进的过程 [1] 。以此为据,我们随后将在影音、购物、美食、旅游等各个领域建立起相似结构,并进行归纳整一,形成一套完整的个人分享社交平台。

2. 系统可行性分析

2.1. 经济可行性分析

该软件内容充实,使用方便,开发周期短,投资小,功能齐全且实用性价值较大。如今,这类产品在市场上不多,所以很有市场前景,投入运营后提供免费下载,通过植入一些广告来获取一些利润。所以该软件为开发团队带来的效益远超过前期的投入。

2.2. 技术可行性分析

我们的项目是运行在iPhone和iPad等iOS平台上的App,使用Apple最新发布开发语言Swift和开发工具Xcode。iOS开发只能采用基于苹果操作系统MAC OS X的XCode开发套件作为开发环境 [2] 。Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。

Swift语言是Apple在WWDC2014所发布的一门编程语言,用来撰写OSX和iOS应用程序。Swift语言的特点是:快速、现代、安全、互动,且全面优于Objective-C语言。Xcode Playgrounds功能是提供强大的互动效果,能让Swift源代码在撰写过程中能实时显示出其运行结果 [3] 。

3. 软件设计的要求

掌握Swift语言的语法,加深对所学内容的理解,提高解决实际编程问题的能力。理解iOS界面开发的相关技术,如故事版Storyboard,xib,AutoLayout和Size Classes等。理解数据处理和存储方面的知识,会利用AFNetworking去请求网络数据并解析成自定义对象。

学习CocoaPods的相关操作,会使用它下载iOS开发需要的framework。学习UIViewController的基本功能,以及UITableView的数据源和代理相关功能。

从总体上把握iOS App开发的各方面,最终完成这款App的开发。

4. 系统设计与分析

该App完整的结构层次图如下图1

1) 主界面:打开软件,主界面有含大量目标对象的列表,其后具评分,供用户进行参考选择。

2) 搜索:列表顶部有搜索框可供搜索,可以直接填写搜索条件,回车确认后就从服务器下载搜索结果显示在另一个列表中。

3) 登录:主界面右上角含登录按钮,如果需要使用用户相关功能如收藏和评论,需要先登录,当登录成功时会自动打开用户用户信息页。

4) 评论和收藏:登录后返回主界面,选择目标对象后进入,可直接进行评论和收藏操作。

5. 设计详细步骤

5.1. 新建项目

新建一个项目,新建相应的包,User对应用户操作如登录、评论和收藏的相关包,Detail是图书详情功能、Index对应首页,Expand对应项目的一些扩展功能,Network存放App网络层操作,Search对应项目搜索功能。

5.2. 设置项目属性

这里我们可以根据需要设置该项目的属性。下面简介图2中的设置选项:

1) 标识符(Identify)。包含捆绑标识符、软件版本、版本标记、软件设计团队。其中捆绑标识符不可重复,本软件是我们首次开发,目前最新版本1.0,版本号里的Build的1说明这个版本是第一次编译的结果,软件设计团队选择Booking表示项目由私人团队开发。

2) 配置信息(Deployment Info)。包括目标设置、选择设备、主界面、设备方向、状态栏的设置。因为现在的iOS设备基本是iOS8和iOS9,所以DeploymentTarget选择支持iOS8.0以上,本项目使用了StoryBoard和AutoLayout,所以设备可以选择iPhone和iPad,设备方向配置项目启动的StoryBoard,项目支持Portrai (竖屏),Landscape Left (横屏向左),Landscape Right (横屏向右),状态栏我们设置亮度可选。

3) 文件命名与尺寸(App Icons and Launch Images)。App Icons Source应用程序图标源。点击可选择不同程序图标源,这里设置为Appicon。Launch Images Sourse启动图片源,设置为自定义的Use Asset Catalog。Launch screen file启动屏幕文件。在导航页面中设置了Launch screen file选择,在右侧选项卡中可以选择。这里我们设置默认选项为LaunchScreen。如下图2所示。

5.3. 使用CocoaPods下载相关的库

当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,这也许是比较特殊的情况。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。因此需要用CocoaPods。

CocoaPods应该是iOS最常用最有名的类库管理工具了,上述问题,通过cocoaPods,只需要一行命令就可以完全解决,重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,掌握CocoaPods的使用是必不可少的基本技能了。

Figure 1. The hierarchical figure of App

图1. App结构层次图

Figure 2. Project properties settings

图2. 项目属性的设置

5.4. 使用Storyboard设计界面

Storyboard的出现使UI间的关系流程一目了然,它其实是xib的升级版本,将多个xib统一管理了。任何事都有双面性,Storyboard也有它的缺点。storyboard中UIViewController太多,找到想要的比较困难。这些缺点在结队开发中就会遇见。如果我们用xib文件,这样将UI最小化分隔开,将后用code将这些小单元连接起来,就可以解决这个问题。如果只用xib就展现不出storyboard的故事情节能力 [4] 。

设计StoryBoard界面,这是已经完成的部分StoryBoard,App每个界面对应StoryBoard中一个Scene,除了基本的Scene之外,也需要一些额外的Scene来支持界面的导航关系,如UITabBarController Scene,UINavigationController Scene,Scene之间的线表示页面间的跳转关系,关系可以分为Push、Modal、Popver和Replace等 [5] 。

5.5. 使用Size Classes,支持iPhone和iPad设备

在iOS8中,新增了Size Classes特性,它是对当前所有iOS设备尺寸的一个抽象。iOS尺寸的设备包括:iPhone4-5-6-6plus、iPad、iPad mini、iWatch,那么如何按照以前那针对种特定设备来编写不同的布局,是一件麻烦的事。

size classes菜单是一个九宫格,我们把屏幕的宽(width)和高(height)分别分成三种情况:(Compact, Regular, Any),也即紧凑、正常和任意。例如:wCompart/hCompart则适用于3.5、4、4.7英寸的iphone的横屏情形;wAny/hRegular适用于所有方向是垂直的情形如iphone竖屏、iPad横屏和竖屏的情形。针对每一种情况,如果需要的话,我们可以单独在storyboard或xib中设置UIView的自动布局约束,甚至某一个button是否显示都是能轻松实现 [6] 。

5.6. 设置AutoLayout约束

对于任何一个UI组件,确定了它的(相对于父view)位置、大小也就确定了它在整个UI视图中的展示效果。

Autolayout是为了解决这些UI可视单元或者元素是怎样布局、排列的问题。在过去只有iPhone4的时候,我们可以在代码里将没一个可视单元的位置写死,这样是没问题的,但随着iPhone5、6的发布,屏幕尺寸有了越来越多中可能,未来不排除更多尺寸的iPhone发布出来,这就要求我们的App的UI元素具有在屏幕尺寸不同的设备上具有一定动态的可调性,已实现较好的UI展示效果。从目前苹果提供的技术来看,有下、中、上三种实现方法:

下策是,代码中判断当前设备的尺寸,对UI元素进行手工的调整。

中策是,通过设置可视单元的autoresizing属性,预设当该view所在的环境(父view)发生变化时它的尺寸和位置应该如何调整。

上策就是结合使用autolayout和sizeclass对UI可视单元的父子关系、兄弟关系进行全方位的调整。

此App使用了第三种方法即上策构建UI。为了适应不同的设备,采用autolayout和sizeclass结合的方法,解决所有的iOS8多屏配适问题以及UI可视单元或者元素的布局、排列问题而产生的自动布局方法 [7] 。此种方法调节精度更高:不仅能确定一个view的位置尺寸的变化依据,还能对这些依据加以不同的优先级(先满足什么条件,再满足什么条件,对于重要的位置尺寸可以优先保证),这样整个App就具有极强的动态可调性,可满足不同设备、不同应用场景下的需求。

Autolayout的作用非常明确:帮我们确定在不同设备、不同(父view)环境下,同一个可视单元所应具有合适的位置和尺寸,因此,当一个UIView上所施加的约束能够唯一确定它的frame(x, y, width, height)的时候我们的自动布局的使用才是正确的。而新手通常犯的两类错误就是约束不足和约束冲突两种。如果你给出的约束只能够确定这个view的大小,或者位置中的某一个项(比如x)的时候,就会出现约束不足的情况,在xib或者storyboard中,会以黄色的警告出现在左侧提示框内;如果你给出的约束推导出了两个甚至多个互相矛盾的位置尺寸结果的时候,就产生了布局错误,在编译的时候直接就build不过。

6. 软件测试

6.1. 主界面

按照上面的包的层次进行相应的代码编写,整个项目采用MVC的分层架构设计 [8] ,Model是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。本项目中设计的模型主要有User,Book,Review等。

View是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。存放视图,Xib,Cell,StoryBoard。Controller是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。因为我们这个是网络应用,所以需要先去下载网络的图书数据,使用AFNetworking这个iOS最流行的网络请求库,并且使用Get方法去请求数据。当请求到数据后,加入数组并刷新UITableView的数据源,然后会执行tableView的数据源和代理方法,来显示数据 [5] 。如下图3所示。

当选中列表顶部的搜索框的时候可以填写搜索条件,回车确认后就从服务器下载搜索结果显示在一个列表中,效果如下图4所示。

6.2. 子界面

当点击图书列表的某一项的时候,触发UITableView的代理方法来打开图书详情页面,在详情页面也是请求数据并展示在UITableView上 [9] 。如下图5

如果需要使用用户相关功能如收藏和评论,需要先登录,当登录成功打开用户信息页,如下图6所示。

Figure 3. Main interface

图3. 主界面

Figure 4. The search interface of the main nterface

图4. 主界面的搜索界面

Figure 5. Sub interface

图5. 子界面

Figure 6. User login interface

图6. 用户登陆界面

7. 总结

传统的开放式社交平台如Twitter、微博等已经逐渐吸引不了更多的用户,越来越多的用户,开始关注隐私或者转向别的社交形式 [10] 。通过此App,用户可以查看和搜索各种图书的信息,自由发表有关书籍的评论,收藏喜欢的图书。当用户为看哪本书拿不定主意时,可以打开此App,查评分看评论。

推广后,通过该App还可以分享音乐,电影,旅游,工作生活经验等方方面面,更加方便快捷的与别人交流,并交到志同道合的朋友。此App让用户更大胆自信的展现自我,丰富朋友圈,让生活更加多姿多彩。该App主题是崇尚自由,任何人下载此软件都可以发表自己的文字和想说的话,随着时间的流逝大家只会更加喜欢此软件。

基金项目

安徽大学学生创新创业训练计划(201510357242),安徽大学教育质量提升计划项目(xjjyxm14048)。

文章引用

葛孟兰,金 娇,赵 悦,储婷婷,李梦琪,张德祥,任乘乘. 基于iOS的App社交软件
The Social Software Application Based on iOS[J]. 软件工程与应用, 2016, 05(03): 190-197. http://dx.doi.org/10.12677/SEA.2016.53021

参考文献 (References)

  1. 1. 段学东, 何九周. 基于敏捷思想的iOS平台软件的设计与实现[J]. 计算机技术与发展, 2012, 22(9): 53-58.

  2. 2. XCode [EB/OL]. http://en.wikipedia.org/wiki/XCode, 2012-07-29.

  3. 3. 百度文档. http://wenku.it168.com/d_000229590.shtml

  4. 4. 王巍. Swifter: 100个swift开发必备Tip [M]. 北京: 电子工业出版社, 2015.

  5. 5. 龙马. Swift从入门到精通[M]. 北京: 人民邮电出版社, 2015.

  6. 6. 关东升. iOS开发指南从零基础到App Store上架[M]. 北京: 人民邮电出版社, 2013.

  7. 7. 李岚, 李可嘉. iOS Autolayout 中的约束[J]. 科技创新与应用, 2015(10): 72-73.

  8. 8. 李春红, 高建华. 使用分层模型改进MVC设计架构[J]. 计算机工程与设计, 2007, 28(4): 766-769.

  9. 9. 朱元波, 陈小玉. iOS 8 案例开发大全[M]. 北京: 清华大学出版社, 2015.

  10. 10. 张利, 王欢. 我国移动社交网络服务的发展现状与方向研究[J]. 现代情报, 2012, 32(11): 68-77.

*通讯作者。

期刊菜单