




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业设计(论文)题目本科毕业设计(论文)FINALPROJECT/THESISOFUNDERGRADUATE(2015届)基于ios8的app开发The App DevelopmentBased On IOS8学院光电信息与计算机工程学院专业通信工程学生姓名学号指导教师完成日期2015年05月30日13基于iOS8 的APP开发承诺书本人郑重承诺:所呈交的毕业论文“基于ios8的app开发”是在苏胜君导师的指导下,严格按照学校和学院的有关规定由本人独立完成。文中所引用的观点和参考资料均已标注并加以注释。论文研究过程中不存在抄袭他人研究成果和伪造相关数据等行为。如若出现任何侵犯他人知识产权等问题,本人愿意承担相关法律责任。承诺人(签名):_日期:年月日47摘要在现有的移动应用开发平台中,IOS作为一个最为成熟的应用平台。它以在程序的初期的开发规范性,开发过程中使用的开发工具的易用性,程序发布到应用市场的人工审核的严格性著称。这些对于生产出一个有着良好用户体验的应用有着很大的帮助。相对于混乱的安卓市场的不同屏幕的适配问题和众多系统版本的兼容问题。基于IOS的开发则不用考虑这些,程序员能把主要的精力用于程序内部逻辑的设计和用户交互设计。IOS平台在众多的开发者的努力下,在Github上有着丰富的第三方库,这些将大大减小开发过程中的难度。本次程序设计的选择的开发方向是一款社交类的app。现在市面上的社交类app种类繁多,各有各的功能和侧重点,但是对于专注与学校范围内的校友互助app,目前还处于一个初期阶段,各种的业务和框架设计都还是处于一个基础的雏形。在经过仔细考虑后,确定的基础功能有:1.及时线上聊天软件与同学间互助请求的发布系统,可以发布,接受,撤销和拒绝任务;2.发布历史管理中心,可以集中管理已经发布的和接受的帮助;3.礼物兑换模块,可以使用参与的活动获得的积分换取礼物;4.个人中心,一些基本信息的修改,包括头像的修改与上传服务器。集成了推送功能,包括对不同的推送信息的处理。Swift作为IOS开发目前两大编程语言之一,相对于Object-C,这两者都为苹果公司自己研发的语言。Object-C作为一个有着10年历史的编程语言,技术的沉淀和架构的稳定是不容置疑的。但是Swift作为苹果公司发布的新一代编程语言,在旧语言成功的经验中总结和升级了众多的先进设计理念和更严格的语法规范,融合了多个主流高级语言的特性为一身的工业级编程语言。因此选择了Swift开发为主Object-C语言为辅的混合编程模式,用Swift语言的优秀框架和Object-C语言的丰富的库,来完成本次应用的开发。关键词:ios8,Swift ,Object-C ,app开发,聊天,交友ABSTRACTIn the existing mobile application development platform, IOS as one of the most mature application platform. It rigor in the development of standardization and development process in development tools ease the initial program, the program published to review the application and the labor market known. Those for the production of a good user experience with the application of great help. With respect to adaptation issues Andrews market confusion and many different screen system version compatibility issues. IOS-based development is not taken into account, the programmer can program the main focus for the internal logic of the design and user interaction design. IOS platform in the efforts of many developers, rich third-party libraries, it will greatly reduce the difficulty of the development process.This time the choice is a social class app, and now a wide range of social class app, each with its own focus. But the focus within the school and the alumni of mutual app, is still in an early stage, a variety of business and are still in a frame design based on the prototype. After a careful consideration, determined basic functions: 1 chat software with timely online publishing systems peer support requests, you can publish, acceptance, revocation and rejected tasks; 2 Release history Manager, you can centrally manage has been released. and acceptance of assistance; 3. gift exchange module, you can use the points earned for participation in exchange for gifts; 4. individual centers, some basic information about the modification, including the head of the modification and upload server. Integrated push features, including push information to different treatment.Swift as the current IOS developed one of the two programming languages, as opposed to Object-C, both of which are Apples own research and development of language. Object-C as a country with a 10-year-old programming language, precipitation and stabilization technology architecture is indisputable. But Swift as Apple released a new generation of programming languages, review and upgrade a number of advanced design concepts and more rigorous syntax specification in the successful experience of the old language, the integration of a number of major high-level language features as one of the industry-level programming language. So choose the Swift development-oriented Object-C language, supplemented by hybrid programming model, with a rich library of excellent framework and Object-C language, the language of Swift, to the completion of the development and application.KEYWORDS: ios8,Swift ,Object-C ,App developing, Instant messaging, dating目录摘要ABSTRACT承诺书3摘要iABSTRACTii目录iii第一章绪论11.1Swift简介11.1.1 Swift的特点11.1.2Swift的应用范围31.2 软件主要功能模块51.2.1 即时通信51.2.2 第三方网络通信库61.2.3 短信验证61.3 程序设计所使用的架构6第二章程序运行功能和逻辑92.1 初始运行(欢迎界面)92.2 登录与注册122.2.1 登录(正常登录/密码找回)122.2.2 注册152.3 主界面模块172.3.1 同学互助172.3.2 我的帮助202.3.3 礼品兑换212.3.4 个人中心22第三章第三方库的使用293.1 Object-C 库通用导入方式293.2 引用库313.2.1 AFNetworking313.2.2 SDWebImage323.2.3 百度推送333.2.4 短信验证343.2.5 即时通讯35第四章 iOS开发证书申请和应用程序发布374.1 证书申请374.2 应用发布38第五章结论41参考文献43致谢45第一章绪论1.1 Swift简介2014-6-3 WWDC 苹果2014年开发者大会发布,这是Swift语言首次面世Swift是一种适用于iOS和OS X应用的全新编程语言,它建立在最好的C和Objective-C 语言之上,并且没有 C 语言的兼容性限制。Swift 采用安全的编程模式,增加了现代功能使编程更容易、更灵活、更有趣。Swift以成熟且备受宠爱的Cocoa和Cocoa Touch框架为支撑,这是一个重新构想软件开发的机会。Swift 经过了数年的酝酿,Apple 通过改进现有的编译器、调试器和框架结构奠定了Swift 的基础,并通过 Automatic Reference Counting(ARC)简化了内存管理。Swift 的 framework stack 建立在坚实的 Foundation 和 Cocoa 基础之上,实现了现代化和彻底标准化。Objective-C 本身已经逐步发展到到支持 blocks、 collection literals 和 modules,使框架不间断地采用现代语言技术。基于这个基础,我们可以为今后的 Apple 软件开发引入一种新语言1。对 Objective-C 开发者来说,Swift 看起来会很熟悉。它具有 Objective-C 命名参数的易读性和动态对象模型的强大之处,供了无缝接入现有 Cocoa 框架和与 Objective-C 混编的能力。基于这个共同点,Swift 引入了许多新的特性、统一的程序和面向对象的语言部分。1.1.1Swift的特点Swift对于新程序员是友好的,作为一个具有惊人表现力和令人愉悦的脚本语言它是第一个获得工业品质的系统编程语言:(1)Playgrounds:一个允许程序员调试Swift代码并立即看到结果的革命性的功能,而无需反复编译运行程序。图1.1 playgrounds运行界面(2)高度集成与简化:如上图所示,既有让人很熟悉的println()函数,这一行代码就是一个完整的函数。不需要为了输入或输出字符串处理导入一个单独的库。全局作用域中的代码会被自动当成程序的入口点,所以也不需要main函数,更简化的是不需要在每句的结尾上写上分号。(3)变量和常量:使用let来声明常量,使用var来声明变量。一个常量的值在编译时并不需要获取,但是你只能为它赋值一次。也就是说你可以用常量来表示这样一个值:你只需要决定一次,但是需要使用很多次。这里的量包含程序中的任意数据类型、类、对象。并有自动匹配对应的数据不用人为去指定类型,如下语句num和num1的数据类型都是Int类型。let num = 10 let num1:Int = 10(4)灵活的控制流:重新定于了for循环,在传统的for语法中加入forin语法的支持,如对一个完整的数组类型数据进行遍历的时候可以不用考虑该数组的长度和写for循环的结束条件,如(图1)所示在新建一个them数组后使用for in语句即可自动处理完整个数组(5)值的对态性(元组):对于程序开发过程中的多返回值问题,一直是程序设计中的一个难点,在Swift语言中,Apple公司新定义了一种新的数据类型元组(tuples)可以把多个不同的变量存入其中,并可以当成函数返回值。var myinfo = (name, 23, 173.5)图1.2 myinfo 的数据类型 (6)函数和闭包:嵌套函数是一种在较复杂函数中方便进行命名和定义自包含代码模块的方式。当然,有时候撰写小巧的没有完整定义和命名的类函数结构也是很有用处的,尤其是在处理一些函数并需要将另外一些函数作为该函数的参数时。闭包表达式是一种利用简洁语法构建内联闭包的方式。闭包表达式提供了一些语法优化,使得撰写闭包变得简单明了。如下图所示函数的定义和闭包的定义,其计算结果是一样。图1.3闭包的定义和简化写法1.1.2 Swift的应用范围在一个互联网腾飞的时代,伴随着科技和经济的高速发展,移动互联已经成为人们不可或缺的一部分,苹果iPhone手机上市之后给我们带来了更大的震撼,其迅速占领了全球的部分移动市场,也成为人们追捧的对象,所以现在就移动互联网来看,目前只有苹果的发展空间是比较好的也是比较可观的,这也是全球IT 界人士的一种共同认识,所以现在对于苹果的运营系统iOS是比较热门的也是行业分析人士比较看好的,无论是在市场上还是在个人或公司都非常看好这个市场。(1) App StoreApp Store是iTunes Store 中的一部分,是iPhone、iPod Touch、iPad以及Mac的服务软件,允许用户从iTunes Store或Mac App Store浏览和下载一些为iPhone SDK或Mac开发的应用程序。用户可以购买收费项目和免费项目,让该应用程序直接下载到iPhone或iPod touch、iPad、Mac。其中包含:游戏,日历,翻译程式,图库,以及许多实用的软件。在Mac中的App Store叫Mac App Store,和iOS的软件不相同。App Store 拥有海量精选的移动 app,均由 Apple 和第三方开发者为 iPhone 度身设计。你下载的 app 越多,就越能感受到 iPhone 的无限强大,完全超乎你想象。在 App Store 下载 app 会是一次愉快的体验,在这里你可以轻松找到想要的 app,甚至发现自己从前不知道却有需要的新 app。你可以按类别随意浏览,或者选购由专家精选的 app 和游戏收藏,Apple 会对 App Store 中的所有内容进行预防恶意软件的审查,因此,你购买和下载 app 的来源完全安全可靠。App Store模式的意义在于为第三方软件的提供者提供了方便而又高效的一个软件销售平台,成为第三方软件的提供者参与其中的积极性空前高涨,适应了手机用户们对个性化软件的需求,从而使得手机软件业开始进入了一个高速、良性发展的轨道,是苹果公司把App Store这样的一个商业行为升华到了一个让人效仿的经营模式,苹果公司的App Store开创了手机软件业发展的新篇章,App store无疑将会成为手机软件业发展史上的一个重要的里程碑,其意义已远远超越了“iPhone的软件应用商店”的本身。在2014年10月21号App Store的应用下载量已经突破了850亿。作为苹果iOS平台新推出的新一代开发语言,在推出一个月后就有Swift语言的程序上架App Store,苹果公司也将在各个方面鼓励和建议开发者使用Swift开发新的项目,不排除在以后的上架条款中加入只能使用Swift的限制。(2) Touch IDTouch ID指纹识别作为iPhone 5s上的“杀手级”功能早已为人们所熟知,iPhone 6、iPhone 6 Plus、iPad mini 3和iPad air 2也使用了Touch ID。1 苹果把用户的指纹数据存放在处理器的安全区域(Secure Enclave)中,充分保护用户的数据安全,该站与维修公司Mendmyi合作,发现除了Secure Enclave之外,苹果还有另外一道指纹数据安全防线,以一种前所未有的硬件技术实现了对用户数据的保护。Touch ID不存储用户的任何指纹图像,只保存代表指纹的数字字符。iPhone 5s的A7处理器采用了新的高级安全架构,其中有一块名为Secure Enclave的区域用以专门保护密码和指纹数据。只有Secure Enclave可以访问指纹数据,而且它还把这些数据同处理器和系统隔开,因而这些永远不会被存储在苹果的服务器上,也不会被同步到iCloud或其他地方。除了Touch ID之外,它们不会被匹配到其他指纹库中。作为一个新开放的接口,现在已经在包括支付宝,微信等支付,应用锁定等功能上已经得到了很多的应用,这是一个密码存储的很好的解决方案,以后也将有更多的应用将使用这个功能来代替密码验证的功能。图1.4支付宝的指纹支付(3)Metal(底层级动画)Metal是一个底层3D绘图API,和OpenGL类似,但是它的开销更低。它是一个GPU上一个简单的封装,所以能够完成几乎所有事情,像在屏幕上渲染一个精灵(sprite)或者是一个3D模型。但需要编写完成这些事情的所有代码。这样麻烦的代价是,让开发者拥有了GPU的力量和控制。没那么底层的游戏框架,像Sprite Kit、Scene Kit或者Unity都是在底层3D绘图API(像是Metal或是OpenGL ES)的基础上构建的。它们提供大部分需要在游戏中编写的底层封装代码,比如在屏幕上渲染一个精灵(sprite)或者一个3D模型。如果你所想要做的就是制作一个游戏,大多数情况下都需要使用一个没那么底层的库,像Sprite Kit、Scene Kit或者Unity,因为它会让开发工作更轻松。随着iOS平台的设备升级,和软件厂商的更新,在手机平板等移动平台上能使用到,可以媲美主机游戏的画面和效果的游戏,并且极为流畅的运行。图1.5Metal封装结构1.2软件主要功能模块本软件设计思路是专注于大学校园服务,以互相发布需求、完成需求、换取积分礼物的形式,为在校大学生提供一个解决校园生活过程中遇到的各种难题的平台。在牵手互助App中,你可以:1.寻求帮助,小到快递代领,大到创业指导,校园生活中方方面面的问题,都可以通过发布需求和悬赏的方式,邀请各路英雄助拳。2.帮助他人,通过自己的一技之长或者空闲时间去帮助他人,而助人为乐后的积分可以兑换精美礼品。3.在软件的校园社交圈中,参与有意义的活动,认识有趣的朋友,度过美好的时光。在此附上此程序的官方网站:/以下是程序的主要功能模块的介绍1.2.1即时通信即时通信中最基本的功能就是通过互联网把用户产生的文本图片等数据进行及时传输的形式,实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。目前即时通讯系统不仅是娱乐聊天工具,在移动通信平台更是有着在碎片化时间段内获取资讯和交换思想。作为一个社交软件,即时通讯将是一个必不可少的模块,以便用户在需要使用通信或聊天的功能时,不用切换应用就能直接在此APP中聊天,并且通过使用数据库保存聊天信息,来确保在此平台上产生纠纷的时候,可以调用聊天记录来帮助处理。在软件内部有自己的即时通信模块,将有助于用户之间的更顺畅的沟通。同时也可以让用户,在使用这个程序的过程中遇到的问题,通过软件内置客服的方式来及时的处理使用过程中的问题。该软件设计思路是同学之间的互相帮助,虽然发布和接受的范围都是一个学校的,但是很多时候发的事件有些人会有不同的理解。这时候即时通讯的功能就体现出它的价值,即可以在接单之前询问一下发单人的具体细节,在事件进行过程中遇到的突发情况也会有相应沟通。1.2.2第三方网络通信库Swift在和第三方库的兼容上也是极为出色,为了实现及时通信功能,本次使用了第三方的及时通信模块,但是由于Swift的全局引用功能,使得不用频繁的引用库文件才能使用对应库的函数,大大降低了开发时对不同库的调用的管理和使用的复杂度,在与服务器通信过程中将会有大量的数据交换,一个完善的网络通信能力接口将是程序非常重要的部分。选择第三方的网络库的考虑是在使用苹果的网络部分的API的基础上,第三方库将会封装的更加适合开发者调用,一些基础的功能的函数初始化,已经被一起完成。在保证与服务器正常连接的同时,客户端的代码量将会少很多。1.2.3短信验证目前在移动设备上的注册和密码找回功能的实现已经越来越依靠短信验证的方式来验证用户信息,以前的通过邮件的验证有着操作复杂性和不及时性。而短信验证是通过向用户的手机号发送验证码,然后使用获得的验证码进行用户的识别。密码找回功能目前也是通过短信验证来进入密码的更新界面,用以解决用户忘记登录密码而照成的无法登录的问题。对于应用内的一些敏感操作,在程序的后续升级过程中也会加入短信验证的步骤,用以确保用户的数据和隐私的安全。作为一个社交类app,即时通信是一个必不可少的功能,1.3程序设计所使用的架构本程序使用的是目前最为流行的MVC架构来开发和架构整个程序的运行逻辑MVC全名是Model View Controller,是模型(model)视图(view)控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建应用程序的模式:Model(模型)表示应用程序核心(比如数据库记录,从网络获取的json数据)。View(视图)显示数据(数据库记录)。Controller(控制器)处理输入(写入数据库记录)。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。MVC 分层有助于管理复杂的应用程序,因为可以在一个时间内专门关注一个方面。例如,可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。作为个人开发人员,MVC更提供了完整可读的业务设计流程图,不同的页面跳转都用不同的箭头和指针表示。图1.6MVC结构图第二章程序运行功能和逻辑2.1初始运行(欢迎界面)初始安装并运行此程序时将会有引导和欢迎界面,这里通过使用一个中转界面来进行判断,这个中转界面没有包含任何可以显示的控件,仅仅作为程序界面跳转的一个中转站,在Controller(控制器)中写入对应跳转与控制语句。有以下3个判断逻辑:图2.1初始安装运行逻辑图(1)首次安装:通过读取本地数据来判断是否存在来判断是否需要显示欢迎界面。因为在首次安装时本地的用户数据为空(在此iOS程序开发中用户数据统一使用iOS框架内部数据存储器:let users = NSUserDefaults.standardUserDefaults(),此存储器内可以在程序的任何位置被调用和存储数据,但是由于数据类型的限制,苹果在官方文档中说明了它不能存储多或过多大的数据)。实现代码如下:图2.2 首次登录跳转程序由于考虑到用户可能安装后打开了程序,并没有浏览完引导界面所以在判断isfirstlaunch是否为空后还要有一个取其值进行判断的过程。在跳转到引导视图的进行赋值的语句如下图所示:图2.3引导界面进入时的操作图2.4引导界面加载函数如上图2.1.3是赋值第一次进入为true图2.1.4中在跳转到登录界面时被赋值为false,运行时引导界面显示效果如下:图2.5引导界面(2)加载登录界面:适用于本地存储器没有存储过用户的帐号和密码,需要用户跳转到登录界面进行,填写帐号和密码进行登录的操作。包括情况是:1)用户首次安装程序2)用户注销了自己的账户。在登录界面将有几个常规的按钮和功能,右上角的注册用户按钮、账户和密码的填写框、登录按钮和找回密码按钮。图2.6登录界面(3)自动登录:对应的情况是用户已经成功登录后,存储器存储了用户的用户名和密码,即可以自动向服务器发送用户名和加密后的用户密码进行校验,如果成功,则返回用户的一些基本信息和属性,在这一状态中会加载用户的图片,并有动态效果的过渡,动画效果结束后进入主界面:图2.7互助界面2.2登录与注册2.2.1登录(正常登录/密码找回)登录模块要考虑有两个方面,一是登录成功,另一个是密码找回。向服务器发送的Post请求也有同步和异步的区分,这个部分将在第3节处详细分析。这里使用同步的请求方式,用以保证只有服务器返回了成功的信息以后才能进入主界面。为了体现正在处理中,此程序将在开始发送登录数据请求的时候启动加载符号的显示:正常登录:对服务器发送了正确的登录信息后,将返回一系列属于该用户的数据信息:(敏感信息做了处理)图2.8服务器返回的值以上返回的值是json格式,为了让程序内可以使用首先要转换成NSDictionary2图2.9发送请求和数据转换函数转换成功后要把其中的值存入用户本地数据结构中,方便在程序中的其它界面调用相应的值,下图是数据解析的语句,可以看出,Swift语言对不同的数据类型的匹配是非常严格,Int类型数据要先转换成Int型才能转换成String类型,虽然这些限制会显得比较死板,但是这样的好处是能大大减少程序崩溃的可能性,也能在开发过程中及时发现后台返回数据的异常情况,以便及时进行bug的修复。图2.10 json数据解析和保存到本地密码找回:忘记密码是很多人都会有的经历,在此软件中的密码找回功能实现中。考虑到了有可能是还没有注册过的用户点进了密码找回界面,所以在手机号填写完整后将先向服务器查询该手机号是否是存在:图2.11检查帐号重复函数如果不存在这个手机号会弹出警告弹窗,如果帐号存在,则进入下一个判断逻辑,包括使能获取验证码按钮控件,更新显示提示信息的UILable控件。图2.12未填写完整和填写完整的区别对于验证码的获取和检验有相应的函数调用,也会对不同的情况加以判断和处理,在点击获取验证码后,将使手机号的填写框设置为不能被修改状态,以防发送的数据出问题:图2.13发送验证码函数图2.14提交验证码验证通过以后,将进入密码修改界面,仅需验证密码的长度是否是大于7位的,和输入两次密码是否相同,如检测成功则发送密码修改的数据。2.2.2注册验证手机号:和密码找回的流程极为相似。首先检测手机号是否被注册,如没有注册即可以进入验证流程(同上:密码找回)。若已经被检测出已注册将会提醒直接登录。密码保护:网络传输过程中有太多的不可控的风险,因此用户的密码安全是非常重要的考量因数。目前的基本考量是将本地的密码hash化然后发送到服务器,在服务器中保存的也是hash后的密码8,来进行密码匹配处理。选择学校:由于本软件的适用范围是一个学校为一个片区的,所以选择学校的功能是通过向服务器发送数据来请求对填写的数据进行数据库查询后的结果,为了覆盖尽可能多的学校,已经在数据库内录入了近2000个学校的名字。由于数据量过大,并没有做拼音搜索的优化,待日后数据库升级时优化。完善用户信息:对于完成所有信息的填写后确认注册的按钮将会被被设置为可以被点击的状态,为了方便用户的快捷操作,在键盘的上方还加入了功能键,可以提供更好的输入信息体验。点击“确认注册”按钮后将保存用户的用户名和密码并跳转到登录界面,用保存的用户信息,自动登录。图2.15完善用户信息前后对比昵称查重:昵称作为将会显示给他人看的唯一用户标识,也在逻辑上设定为是不可以重复的所以在用户输入完成后将进行检查重复的步骤。作为主逻辑的一部分,这个检查将使用同步的方式给服务器发送数据。图2.16昵称重复检测2.3主界面模块主界面将分为四大板块:同学互助、我的帮助、礼品兑换、个人中心。这四大板块将构成本程序的所有核心功能,2.3.1同学互助图2.17同学互助(1)“求帮助”、“我要帮”模块这两块分区是整个软件的核心,设计的目的是为了区分发布事件的人是请求帮助还是提供帮助。请求帮助部分在“求帮助”中,分为:随手帮, 求学霸, 约同学,友大神四小类。提供帮助部分在“我能帮”中,分为:二手闲置,同学的店,我会技能三小类模块切换主界面中的显示也是被分割成两部分显示,每次切换模块会调用刷新函数,加载对应的模块。在程序设计初期,原来的设计是在切换的时候取“Bool”量的非值,在快速切换过程中会出现切换失败、延迟等各种问题。目前采用的是数值匹配切换,并且在切换过程中将切换按钮按下操作失效,只有等刷新完毕后才重新生效。进过多次测试,均没有出现过错误。界面加载全加载:为了实现了切换到该界面和下拉刷新的功能,同时减少代码重用照成的代码臃肿,将加载功能封装到一个加载函数。全加载是加载所有的种类和条目的功能,加载函数通过给予的参数来显示全加载和部分加载2部分加载:加载函数需要设计出,尽可能完善与友好的接口,已应对用户使用筛选功能后,需要加载不同筛选要求的筛选结果。取消筛选加载的方式有两种:一是,通过点击筛选按钮,进入筛选界面后取消筛选。二是,通过下拉刷新来取消筛选,并有文字提示,用来培养用户使用习惯。(2)筛选模块图2.18筛选界面功能简介:筛选的功能是为用户快速定位到自己所需要的分类,加入对“关注人”的筛选,更可以直接筛选出用户关注的人,所发布的事件。加入了性别的筛选,方便有对性别需要的用户使用该功能。对于进入该页面需要考虑的设计是,进入该界面的时候,主界面是处于未筛选状态还是已经正在筛选的状态。解决不同状态的区分的思路是通过界面跳转时传递的参数来判断,在此处的设计是加载上一级的所有状态的参数,使得页面与参数的匹配是一一对应关系,只有点击“确定”按钮后才会传递筛选参数,并调用加载函数。如果点击了返回按钮则不做任何改变。为了实现不同的选择,显示不同的效果,这里被选中的样式是蓝框蓝字,未被选中的是灰框灰字。不同的大类将有不同的小类,如上图显示。大类的选择是单选,小类的选择是多选,每次的点击都需要重新加载界面,来显示不同的效果。每次大类选择的更改将会同步刷新小类别的文字说明,按钮个数,显示状态。(3)发布模块图2.19发布界面功能简介:发布功能是在整个平台发布新的事件,发布的事件将会其它用户看到,并使其它用户参与他们敢兴趣的事件。为了帮助用户更好的分类,在每个小类的后面都加入了一小段的介绍。为了提示用户输入正确相应的标题和内容,每个输入框内都有灰色的说明文字,该文字将在输入时被清除,不会影响用户所输入的文字。与筛选的选择逻辑不同的是,每个大类和小类都是唯一选择的。所以对于大类的切换,将会有不同的小类被加载,对应的介绍文字也会被加载。小类的加载只会切换不同的介绍文字,并切换到被选中的状态。对于发布“求帮助”模块,由于要消耗用户的积分,为了吸引用户使用,设计了“每日首单免积分”的选项。所以加载该页面的时候将会判断一下该用户是否是今日首次发布任务,不同的状态将会加载不同的选项,以供用户选择。9(4)详情模块图2.20帮助详情功能简介:做为本程序中,重用度最高的界面,这里涉及到多方考虑因数,大体分为看他人发布的事件时的界面,和查看自己发布的事件。对于他人发布的事件,只能有是否参与的权限,根据不同的事件状态将会有不同的显示。同时右上角将会有举报功能,平台通过用户的反馈来处理这些事件。如果对自己感兴趣的事件,但是还是不是很清楚,平台提供私聊的及时通信功能,通过一对一的聊天方式来及时沟通。在事件的进行过程中,也可以通过这个及时聊天模块来解决帮助事件过程的沟通问题。对于自己发布过的事件,把右上角的举报按钮取消掉,并且在没有和其他用户产生联系的时候有可以撤销发布事件的权限。点击头像可以进入对应的人的资料页面,可以关注对方和取消关注,也可以直接发起聊天,如果是自己的头像,将进入属于自己的资料界面,可以对自己的资料进行修改,修改部分将在:2.3.4-“个人中心”处说明2.3.2 我的帮助图2.21我的帮助已发布:包含了用户自己发布的所有事件,包括发布的“求帮助”,“我能帮”所有的事件,由于服务器发回的数据是两张表的内容,所以在加载之前需要将服务器返回的数据进行交叉融合式排序,如下图所示,Tablet1内是“求帮助”的内容,Table2内是“我能帮”的内容,在此处的数据是正式运营的数据,不能随便发布测试内容,故此处为空。图2.22服务器返回的数据在图 中可以看出每个数据都有时间,所以事件的排序是安装这个时间的先后顺序来进行两个表的交叉排序,下面给出把时间转换成时间戳的函数。图2.23获取时间戳在进入详情页中可以看到对应的状态,如果是初始状态,将可以点击进入“帮助详情”界面,撤销该事件。每个事件可以进行相应的操作,如果有人向发布者提交了申请,在这里可以管理所有申请。对于“求帮助”,由于是一对一帮助关系,所以只能接受一个人的申请,同时也可以拒绝其它人的申请。对于“我能帮”,是一对多关系,一个事件可以被多人申请,可以多人接受。已接受:包含用户申请的所有事件,包括接受的“求帮助”,“我能帮”所有事件,处理数据源问题同上。可以看到申请的事件的状态,在事件完成时,需要进入“帮助详情”页面进行确认完成,如果中途不想帮助了,也会有取消按钮可以取消帮助。2.3.3礼品兑换礼物兑换是平台积分的消耗重要途径,也是与其它公司合作的一种方式。软件平台方面,可以让用户兑换到自己喜欢的礼物,更加喜欢这个软件。对于其它公司,一种产品的兑换也是对其他公司的一种宣传。在临近毕业的期间由于发生了校友需要手术费用捐助,追加了募捐接口并且放到最上面。图2.24礼物兑换和“爱心接力”(1) 礼物兑换礼物兑换模块,由于很多的礼物是实物的礼物,如果对换人地址太远,将会多花费很多油费,解决的方案是对地区的区分,不同地区和学校,显示不同的信息。具体算法是字符串查询,服务器返回的信息解析,在AbleCity、AbleSchool 字段中获取可以兑换的城市信息和学校信息。如果用户的账户所在的学校或地区在这个字段内,则代表可以兑换。(2)爱心接力爱心接力,这个模块在最初的设计中是没有的,在软件开发的后期,学校内校友突然得了重病,本软件的宗旨就是帮助他人,特意加班加点的加上了这个模块。设计了一个很特别的接力方式,在图()中寄语处填写好寄语,然后点击爱心接力的按钮,本软件就算是筹集到了1块钱,最后会把寄语和金钱送到那位急需手术费的校友手中。每个人只能捐献一次,是为了防止有人刷单。在礼物兑换界面中爱心接力是可以被关闭的,点击右上角的灰色“叉”型图标,即可以去掉这个这个活动的条目。2.3.4个人中心个人中心是每个用户管理和查看个人信息的页面,对用户的一些可变的信息进行修改,密码修改,因为涉及到账户安全的问题,所以还没有做在个人中心。个人中心还有一些历史信息的展示,包括聊天的记录,积分获取的记录。图 2.25个人中心和积分历史(1) 个人资料显示和修改在个人资料中有明确的显示,可以修改的是黑色字体,不能修改的是灰色字体。图 2.26个人资料、头像修改、资料修改头像的上传使用的第三方库实现的图片上传,和发送post数据有很大的区别,post的数据是很短的一串参数,而图片是一个比较大的数据段,为了文件的完整性,需要检查是否发送错误。对于服务器而言,图片不能直接保存在数据库中,这将会影响数据库的性能,所以数据库保存的是图片的URL地址,而图片存在服务器的文件夹内10。图2.27头像上传(2) 积分历史,会话记录图2.28积分历史,会话记录积分历史记录了每个用户的积分进出的情况,系统相关的,如登录送积分、礼物兑换、完善信息用黑色文字标识。用户相关,如发布帮助、求助事件、请求事件用深蓝色标识。会话记录记录了所有通过私聊产生的及时通信的人的列表,是按照时间的优先来排序,由于需要考虑到其它用户会修改头像或昵称等数据,所以每次加载列表的时候,将从服务器上获取相应的头像昵称等信息。下图是获取头像和昵称的函数,使用了闭包等写法,优先判断是否是获取自己的昵称和头像地址,如果是的话,就直接返回了自己的信息,这样可以减少对服务器的访问,同时也可以让会话列表加载的更快。图2.29获取头像和昵称信息(3) 意见反馈、在线客服意见反馈是为了及时和用户沟通的渠道,加入在线客服模块,这样的话,可以及时的处理用户使用过程中的问题。图2.30意见反馈、在线客服(4) 用户协议、帮助信息用户协议是本软件的一些帐号信息,隐私协议,使用规则,法律相关等问题,帮助信息是用户可能对“积分”、“我要帮”、“我能帮”、“我的帮助”等的解释说明。对于帮助信息的添加是在申请苹果商店审核的时候,被拒绝时知道的一个不成文的规定,对于软件内的开发者自己定义的内容是需要,一份比较清晰的解释文字,不然这个软件,将不会通过审核,也就不能上架在苹果的App Store中。图2.31苹果发来的拒绝理由截图图2.32用户协议、帮助信息(5) 注销注销当前用户,方便用户清空自己的数据和账户切换。对于推送来说,注销也意味着,同时需要对把服务器和这个帐号所登录的设备进行解绑,如果仅仅清空了本地的数据,那么很有可能会在注销以后还能接收到之前被注销过的帐号的推送。图2.33注销第三章第三方库的使用iOS的官方SDK是一个偏底层的库,需要实现一个功能是需要很多的代码来实现,第三方库则是开发者通过自己的开发总结,把一些很常用的但是代码繁琐的功能封装在一个新的库内。通过调用第三方库,可以简化开发的代码,使项目整体的结构更清晰和紧凑。没有一个库是可以做完所有的事,所以在选择第三方库的时候,需要有对这个库足够的认识和理解,要明白所选择的库可以完成的功能,适用的范围。对于引入库也是有很多需要注意的问题,第三方库原则上是对系统SDK的一种封装,所以在引入自己需要的库的时候,同时也需要把库中需要的系统SDK内的库引用到工程中,不然就会无法编译成功。此次选择的是Swift语言为主题框架的APP开发,而目前的很多第三方库都是使用Object-c语言开发的。这里就涉及到了,两种语言的混合编写问题。解决方案是根据苹果官方发布的指导书籍Using Swift with Cocoa and Objective-C使用桥接文件,使两种语言在这个桥接文件能互通。Swift语言在这一点上做得非常先进,只要在桥文件中引用过的库,在整个项目中的Swift语言框架中可以随意调用,而不用重复的引用库对应的头文件。下午中所有用到的库都是基于Object-C的库,在使用Swift引用的时候,按照网上找的资料来操作,尝试了很多方法,都没有成功,最后一次偶然的尝试,打通了以后所有的第三方库的集成问题。这个部分将在3.3部分详细说明。这一章内将会介绍该项目中使用的所有第三方库,每个对应库的使用方式,相似库的取舍问题。3.1 - Object-C 库通用导入方式由于两种语言均为苹果公司所开发,所以在兼容上有很好的友好性。但是网上很多的导入教程都是用的Github上的标准教程。使用上面的方法会照成很多的问题,甚至引起整个程序的基础编译环境被改的面目全非,最后无法使用。在开发初期,不管是Xcode还是Swift语言,都有很多的小问题,对于Cocoa Pods这个库管理程序来说,它对最新语言的支持还是有很多的问题。最后通过了自己的摸索。发现在使用第三方库的时候可以直接把对应的原代通过打包的方式加入在自己的项目中。4由于原先的项目涉及到的库较多,书写论文时使用新的项目来做一个截图和说明。Github做世界级的源代码库,里面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村电商服务站农村人才引进与培养模式报告
- 2025年海油培训试题及答案
- 2025年钢筋套丝工考试试题及答案
- 2025年密度测量试题及答案
- 贵州信用社真题及答案
- 2025年兽医防疫员考试试题及答案
- 2025年小学检测考试题及答案
- 农村管网改造施工方案
- 预测期末考试试题及答案
- 2025年数字格子游戏题库及答案
- (2025秋新版)部编版八年级上册道德与法治全册教案
- 八年级心理健康体验式教学计划
- 二手房资金监管协议书
- 消防监控考试题初级及答案
- 2025年太阳能海水淡化项目经济效益评估报告
- 2025年湖南湘西自治州州直事业单位招聘考试笔试试卷附答案
- 《小学开学第一课》课件
- 北师大版八年级数学上册教案(全册完整版)教学设计含教学反思
- 国家自然科学基金联合申报协议书
- 新教科版五年级科学上册全册课件(精品PPT)
- 教学课件:大学生心理素质训练
评论
0/150
提交评论