




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录摘 要I关键词IAbstractIKey wordsII1前言11.1研究背景及意义11.2移动办公国内外发展现状12开发环境及相关技术22.1 iOS系统与Objective-C简介22.2开发环境32.2.1 Xcode IDE32.2.2 iPhone模拟器42.2.3 Instruments52.3 运行环境52.3.1 iPhone的硬件规格52.3.2 iPhone在线办公上的优势52.3.3 iPhone的不足62.4 技术简介62.4.1 MVC模式62.4.2 iOS内存管理72.4.3单例、委托、通知、block73 软件体系架构与设计83.1软件整体架构设计93.2功能性需求分析与设计103.2.1网络通信模块103.2.2登录模块103.2.3首页模块103.2.4车牌录入模块113.2.5派卡记录查询模块113.2.6套餐报价查询模块123.2.7设置模块124 项目功能实现134.1启动界面动画实现134.2网络与数据134.2.1网络通信模块实现134.2.2 JSON数据解析实现144.3登录模块144.3.1用户登录子模块实现144.4登陆模块实现154.4.1登陆实现154.4.2备案功能实现174.5智能拍照识别功能实现174.6定位功能实现184.7检测更新功能实现195项目性能测试及运行情况205.1项目性能测试205.2项目运行情况21总结22参考文献23致谢24基于iOS的派卡系统设计与应用摘 要网络技术与移动技术推动了移动互联网的迅速发展,导致新一代移动端设备的迅速发展,在这种背景下移动办公应运而生,从而渐渐改变了人们的办公方式,也改变着传统的工作模式。移动办公为自主办公提供了便捷,使它成为当前新工作模式的主流。本文在分析国内外相关研发状况的基础上,设计了一款基于iOS平台的APP办公应用,之后也逐步实现了这一设计。该应用根据移动办公过程中的特点,从用户需求分析开始,通过移动办公系统课题的研究和开发,实现了车牌信息查询录入、查询派卡记录统计、套餐实时报价查询等功能。系统中用到的理论知识和相关技术进行了详细介绍,并介绍了设计和用户体验上的具体优化,给出了APP的性能测试。关键词 移动技术;iPhone;iOS ;APP Paika System Design and Application Based on iOSAbstractNetwork technology and Mobile technology promoted the rapid development of mobile Internet,led to the rapid development of a new generation of mobile terminal equipment. Under this background, Mobile office arises, it gradually changed the way of peoples work, and changed the traditional working mode.The Mobile office provides a convenience for independent office, make it become the mainstream of the current new work mode. In this paper, on the base of analyzing the situation which is related to research and development in domestic and overseas, I designed an APP office application that is based on the IOS, and also realize the design gradually. This application is according to the characteristics in the process of mobile office, starting from the analysis of users demand. It realized the query and input of license plate information, the statistics of querying sent cards record, the query of package which can offer real-time quotation and so on through the research and development of mobile office system task. In this paper, there is a detailed introduction about the theory of knowledge and related technology which are used in the system. And it also introduces the specific optimization of design and users experience, gives a performance test of the APP.Key words Mobile technology;iPhone;iOS;APPII1前言1.1研究背景及意义随着移动网络时代的来临,手机、平板电脑、上网本等移动终端迅速发展,市场不断扩大,用户群也在不断扩大。又移动网络宽带飞跃式的增长,3G、4G、WiFi网络的普及,为移动设备的发展注入了新的动力。当人们在传统的办公形式中,通过纸质、电脑等途径办公的时候。办公效率的问题,一直困扰着人们。就在这时候,在线办公已经悄悄的走到身边。移动在线办公轻松的解决了传统模式的办公难题,员工不管在哪都能够享受到实时办公。信息实时的优势、以及更多的选择和便利性,是目前的移动在线办公正颠覆传统办公方式的三大有利因素。十年前你想听实时办公可能是白日梦,那互联网发展的今天,这些都成为了可能。很多欧美国家已普遍接受在线办公的模式,这种依托在线办公系统完成工作的活动,摆脱了空间和时间限制的优势是当前办公技术领域的研究热点。目前人们大多还是在台式不可移动设备上办公,就在近几年移动设备的优势越来越明显,接近与台式机的性能同时又兼具移动便携性,人们开始依赖这些设备生活。2007年美国苹果公司的iPhone发布后,给移动教育解决了这一大难题。纷纷有美国、新加坡、法国、英国等多个国家开始将iPhone引用进办公系统中,并引起了员工强大的兴趣。通过这种办公方式节省了成本,提高了效率,减少了纸质文档的印刷,为环保做了贡献,也让人们对iPhone有了新的认识。本课题的研究是在以C/S模式设计和开发基于iPhone的移动办公系统,目的在于改造现有的办公模式,同时在可移动使用的iPhone设备上通过流媒体(在线视频)技术来呈现生动形象的办公内容,自由自主的办公环境,提高员工的办公效率,激发出员工对工作的热情,其关键是iPhone客户端应用软件开发。1.2移动办公国内外发展现状业界早有共识:1990到2000年是PC的十年;2000到2010年是互联网的十年;2010年之后的十年将是移动互联网的十年!如今,联想柳传志声称要用社交网络做业务,万科王石和京东刘强东在美国用iPad、手机遥控自家企业,此时,作为企业管理者,还站在移动互联的门外,显然是落伍的。 当下,对于企业而言,移动互联网最初的颠覆就是高效的信息流转,以求与物流、资金流形成合力,目前,全球已有24%的机构完全接受了移动办公方式。预计2014年这一比例将达到83%。但是,在中国,老板们还有心病难除。最近的研究表明,员工喜欢移动办公,老板却未必买账。老板的心结是显而易见的:一则怀疑员工到底有没有在“上班”,二则唯恐企业有紧急工作时找不到人。这些心病恰恰反映了保守派企业的短处:管理思想墨守成规,管理方法不具有包容性和应变能力。数家高薪民营企业的实践表明,对从事许多项目的员工实行移动办公,不仅可以降低办公成本,还能大幅提升办公效率,更没有“找不到人”的时候。事实上,移动办公反而是考察员工责任心和效率的试金石,就像Cisco 的调查显示,其3/5 的员工说他们的工作效率与是否在办公室无关,超过38%的人认为家庭办公最有效率。与之相对,移动办公移销宝的优势却显而易见。它不仅挖掘了时间和空间的机会,还把握了效率和价值的机会。对员工而言,移动办公令自主工作进入一个与大势相合境界。于企业而言,它节约办公费用还在其次,更实惠和核心的是能积极管理劳动力价值成本而不是劳动力价格成本,激发员工在办公室之外的工作效能,最大地挖掘其价值。 仔细观察,不难发现,移动办公不仅在世界范围大受欢迎并被广泛推广,在国内很多新兴小微企业也是如此。很多新创业的公司都或多或少引用移动办公技术,以求企业的生存和快速发展。 按照IDC的统计,2011年全球有10亿左右移动办公人员。到2013年,会有11.9亿的员工采用移动办公,占全球员工人数的34.9%。 移动办公正在成为新的办公趋势。 对于企业管理者而言,是顺势而为,还是逆潮而动,答案显而易见。2开发环境及相关技术2.1 iOS系统与Objective-C简介iOS是由苹果公司开发的移动操作系。苹果公司在2007年公布了这个操作系统,现在iPhone、iPhone、iPod touch等设备上均使用改移动操作系统。它属于类Unix内核的商业操作系统,具有较强得内存管理能力,能同时运行多款软件。iOS 操作系统支持多点触控,可与系统进行基本手势交互,包括滑动(swiping)、轻按(tapping)、挤压(pinehing)及旋转(fntating)。iOS 层次架构如图2.1所示,iOS 大体上可以分为以下四个层次。图2.1 iOS分层架构图1) 、Core OS 核心层:包含Accelerate Framework、External Accessory Framework、Security Framework、System等几个框架,为其他方法类的使用提供基础功能,比如:硬件驱动、内存管理、线程管理、文件系统、网络以及标准输入输出等。2) 、Core Services核心服务层:包含Address Book Framework、CFNetwork Framework、Core Data Framework、Core Foundation Framework、Core Location Framework、Core Media Framework、Core Telephony Framework、Event Kit Framework、Foundation Framework、Mobile Core Services Framework、Quick Look Framework、Store Kit Framework、System Configuration Framework、Block Objects、Grand Central Dispatch、In App Purchase、Location Services、SQLite、XML Support等一些框架,为系统中的其他应用提供基本系统服务,同时也提供了很多有用的方法类,如:SQLite数据库、iCloud存储、定位、联网以及一些安全服务等。3) 、Mediah媒体层:包含Core Graphics、Core Animation、OpenGL ES、Core Text、Image I/O、Assets Library Framework、Media Player Framework、AV Foundation、OpenAL、Core Audio Frameworks、AV Foundation、Core Media等,提供了一些媒体技术,包括图形图像技术、 视音频技术、 核心动画技术等4) 、Cocoa Touch 触摸层:包括Address Book UI Framework、Event Kit UI Framework、Game Kit Framework、iAd Framework、Map Kit Framework、Message UI Framework、UIKit Framework等等,它们是任何应用程序的关键架构,所有应用程序里面的各种组件都来自于此,此外还提供了多任务处理、多点触控、图片文字的输出显示、文件的存取以及加速计等功能。iOS项目开发时所使用的语言是Objeelive-C和Cocoa编程。Objective-C是种扩充C的面向对象的编程开发语言,极度简化了C+语言,Cocoa是对Objeelive-C的高级封装,可以大量简化开发者的工作量。Objective-C 语言有三个主要特点,首先是有消息传递模型,其次是动态能力,最后是内存管理。Objective-C通过支持类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展提升了标准的 ANSIC语言。现在Objective-C 主要应用于Mac OS X和i0S这两个NeXTSTEP的派生系统,为了在iPhone上面开发 C/S 模式的应用,就必须使用Objective-C语言编写iOS应用。2.2开发环境2.2.1 Xcode IDE目前iOS应用开发唯一的开发工具就是Xcode,Xcode6.1是目前最新版本,它是苹果公司向开发人员提供的集成开发环境,必须运行在Mac OS系统下。它可用于管理工程、编写代码、构建可执行文件、进行源码级调试、进行源代码仓库管理、进行性能调节、应用发布工具等一系列开发工具,可以满足应用开发中的各种需要。Xcode支持了多种语言编写的程序,包括C、C+、Java、Objective-C等,而且每种语言的编译速度都很快。Xcode IDE是Xcode集成开发环境主要的组成部分,开发过程中的大部分工作都是使用Xcode IDE来完成。图2.2是Xcode6.1的主界面。最新的Xcode IDE将功能融为一体,主要的功能有编译器、Fix-it、Interface Builder、源代码编辑器。a)编译器。Xcode IDE集成了强大的Objective-C、C、Java、C+开源LLVM编译器,使得可以生成iPhone、iPhone、iPod Touch等产品调试用的app。.b)Fix-it。在开发的过程中难免会因为疏忽造成一些语法错误,这时Fix-it就有了它的用武之地,它能够立即提醒开发者所犯的代码错误,这对开发的效率有非常大的提高。c)Interface Builder。在开发过程中,开发者需要构建很多所需的UI界面,Interface Builder能够很快速的生成UI界面,并且能够实现代码与界面的功能链接。图2.2 Xcode6.1主界面d)源代码编辑器。在编写iPhone应用过程中,为了使每个方法每个变量一目了然,开发者不得不使用较长的名字来分辨它们。源代码编辑器具有智能的代码补全功能,它还有代码折叠、语法高亮、消息起泡等很多实用功能。2.2.2 iPhone模拟器iPhone模拟器即iOS Simulator,在开发过程中我们需要查看代码在设备中的形态,iOS Simulator的运行结果基本跟真机相似,它有完整的iOS设备的不同版本与不同机型,非常方便的让我们可以在很多机型上面测试,解决了我们需要很多真机设备测试的需求,也是调试屏幕适配的重要工具。由于电脑缺少了部分硬件所以少数功能是iOS Simulator不能完成的,比如:定位、加速计、相机、打电话、3G网络等功能,所以有一台真机进行测试也是必不可少的。2.2.3 Instruments为了让应用尽可能完善,在开发的同时需要保证应用是否存在闪退等一系列内存泄漏问题,也要保证用户体验要好。这时Instruments起到了重要的作用,在iOS应用程序运行在真机或者是模拟器上时,可以利用Instruments环境分析性能。Instruments会清晰的记录应用程序的行为,可以查看内存分配等重要指标。这些数据都可以很方便我们对程序的评估和修改,在很大程度上提升了程序的健壮性。2.3 运行环境2.3.1 iPhone的硬件规格由苹果公司官方在线商店(/cn)得到iPhone不同型号的硬件规格,表2.1所示:表2.1 iPhone硬件规格型号iPhone6 PlusiPhone 6iPhone5siPhone 5ciPhone 5屏幕尺寸5.5英寸4.7英寸4.0英寸4.0英寸4.0英寸处理器A8芯片拥有64位架构和M8运动协处理器A8芯片拥有64位架构和M8运动协处理器A7芯片拥有64位架构和M7运动协处理器A6芯片A6芯片显示屏Multi-Touch显示屏Multi-Touch显示屏Multi-Touch显示屏Multi-Touch显示屏Multi-Touch显示屏分辨率1920X10801134X7501136X6401136X6401136X640摄像头后800万像素,前120万像素后800万像素,前120万像素后800万像素,前120万像素后800万像素,前120万像素后800万像素,前120万像素续航12小时11小时10小时10小时10小时Touch ID指纹识别传感器指纹识别传感器指纹识别传感器-重量172克129克112克132克112克2.3.2 iPhone在线办公上的优势iPhone的优势之一就是便携,在地铁、在公交、在路上,随时随地非常方便。iPhone的尺寸相对于电脑来说很小,也很轻,但是iPhone的内容远远大于一个图书馆,对于工作者而言能够大大的减轻负担。iPhone兼具经济性与环保性,如果公司将iPhone应用于办公中,将传统的纸质办公、电脑办公装进iPhone,不仅减轻了员工的公文包,降低了纸质材料印刷费,无疑在经济和环保问题上都做的贡献。在室外我们更是可以通过实时查看数据的方式,了解需要自己实时处理的问题,也方便办公者查看和办公。APP store拥有许多不同的iPhone应用,各种办公方式,激发人们对办公的热情。目前APP store里iPhone办公类应用很多。iPhone改变了人们的信息录入习惯,让人们可以用手指与显示屏触摸和滑动输入,让使用者更加直观明了,缩短了使用者与机器的距离。iPhone改变了人们对技术的观念,为新一代电子设备打下基础,如今时尚科技已经渗入我们的生活。2.3.3 iPhone的不足优点和缺点总是相互存在着,iPhone也不例外。价格是iPhone的硬伤,虽然中国GDP在不断的增长,但是对于多数家庭来说花四五千去买一台电子设备还是会显得昂贵。iPhone开发之初就是面向个人的通信设备,至今主要还是娱乐和社交功能,因此在思想不够成熟的时候很容易分散办公者注意力。iPhone等电子设备很多画面都采用明亮的色彩,视觉刺激过于强烈,长时间的观看会引影响人体健康。iPhone不支持移动存储设备,在离开WIFI的环境中想要分享数据显得很不方便。iPhone是现阶段移动办公辅助工具在业界的最高水准,如今市场上也出现了很多手机,如基于Android系统的小米、华为、三星等,基于WP系统的诺基亚、HTC、三星等。虽然有部分设备硬件性能、便携性上超越了同期的iPhone,但是是应用的数量与质量、用户体验、续航能力、性价比等还是不能和iPhone比拟的。因此只要合理使用,在条件允许的情况下iPhone是移动办公的不二良选。2.4 技术简介2.4.1 MVC模式MVC全名是Model View Controller,是模型(model)视图(view)控制器(controller)的缩写,也是构成这种框架的三个部分如图2.3所示。MVC是一种软件设计的典范思想,用一种业务逻辑、数据、界面显示分离的方法组织代码,降低耦合,可以说任何一个完整的应用都是由MVC构成的。a)Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。模型不需要知道数据是怎样被试图呈现的,也不关心是怎样被控制器操作的。图2.3 MVC框架图b)View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。视图不能直接与数据通信,使用dataSourcr接口从控制器获取数据信息。c)Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。在iOS程序开发过程中视图和控制器之间的通信是固定的,主要通过outlet和action来实现。在MVC架构下,视图和模型是两个完全独立的成分,以控制器为中介进行交互者,两者没有直接的联系。开发者编写的对象可以很容易划分到其中的某个部分,也就是低耦合,这种模式适用与大多数语言编程,不仅仅是Objective-C。2.4.2 iOS内存管理程序运行时,开辟的内存空间。使用它,释放它的过程,写的好的程序尽可能少使用内存。Objective-C的内存管理机制与.Net/Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍微加了一些自动方法。内存管理模式基于对象的“所有权”上。任何对象都会被有一个或多个使用者引用,只要对象还有一个使用者,该对象就应该继续存在。如果一个对象没有使用者了,系统将自动销毁它。为了让开发者清晰的了解:使用对象和不再使用对象的场景,Cocoa设置了以下策略:(1)管好自己创建的对象。开发者使用alloc、new、copy和mutableCopy来创建对象。(2)使用retain来获得对象的所有权。某个函数接受的对象,通常保证在该函数调用期间仍然可用,并可以安全返回对象给上层调用者。开发者在以下两种情况下使用retaina在“访问函数”(accessor)的实现中或者在init方法,为了将对象作为自己的属性。b防止对象被其他操作释放掉,从而变为无效的对象。(3)当你不在需要的时候,必须放弃对象所有权。2.4.3单例、委托、通知、block单例设计模式Singleton,单例模式的意思就是只有一个实例,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式的优点有:实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程。在objective-c中要实现一个单例类,至少需要做以下四个步骤:a)为单例对象实现一个静态实例,并初始化,然后设置成nil。b)实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例。c)重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例。d)适当实现allocWitheZone,copyWithZone,release和autorelease。delegate中文叫做委托,通常会用在class内部把一些事件处理委托给别人去完成。委托设计模式的实质就是指针的传递。传递指针的问题在于,对方持有了对象指针之后是不安全也不合理的,因为当有了对象指针就可以操作对象中任何内容,所以这时候采用委托就很好的避免了对指针的操作。举个例子,XML Parser可能他知道怎么parse xml,但是parse到的东西要怎么处理xml parser可能不知道。所以NSXMLParser就提供了一个NSXMLParserDelegate给client去实作,当parse到某个element的时候,就callback delegate所定义的message,让他client自己去决定怎么去处理这个element。通知即NSNotificationCenter,是专门供程序中不同类间的消息通信而设置的。每个运行中的application都有一个NSNotificationCenter的成员变量,它的功能就类似公共栏。对象注册关注某个确定的notification(如果有人捡到一只小狗,就去告诉我)。我们把这些注册对象叫做observer。其它的一些对象会给center发送notifications(我捡到了一只小狗)。center将该notifications转发给所有注册对该notification感兴趣的对象。我们把这些发送notification的对象叫做poster。block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值。block实体形式如下:(传入参数列)行为主体;block实体开头是“”,接着是由小括号所包起来的参数列(比如 int a,int b,int c),行为主体由大括号包起来,专有名字叫做block literal。行为主体可以用return回传值,类型会被compiler自动辨别。如果没有参数列要写成: (void)。3 软件体系架构与设计3.1软件整体架构设计派卡系统平台iPhone客户端的构建完全遵循MVC的设计模式,同时构建基于iOS系统的软件所使用的SDK都是遵循MVC设计模式的。根据公司需求,软件首先需要实现与服务器之间的数据通信,然后软件框架分为派卡首页、派卡记录统计、信息查询录入、套餐实时报价等模块,具体框架如图3.1。图3.1 客户端功能模块图框架采用基于C/S模式的三层架构,分别是:用户界面层、业务逻辑层、数据持久层。界面层主要由iPhone客户端完成,业务逻辑层在web服务器上,数据层主要是写本地数据库和缓存。3.2功能性需求分析与设计3.2.1网络通信模块网络通信是本应用软件的基本支撑,通过访问网络得知服务器数据的变化,从而呈现不同的课程也界面功能。当网络通信故障、或者网络切换时,需要有相应的提示信息告知用户。3.2.2登录模块用户登录功能是本应用软件的一项基本功能,用户必须在登录状态下进行查询、录入等功能。在一定得时间内,应用软件会保存用户的登录状态,勉强了用户反复登录的麻烦。用户必须输入公司发放的用户名和密码组合,使用虚拟键盘登录。会在本地判断输入信息是否合法,然后发送给服务器比较。服务器返回“登录成功”时登入系统,否则提示错误,需要重新登录。用户注册模块是为了用户使用本应用软件的特殊功能的通道,用户登陆时,同一个账号只能激活一台iPhone手机,若再激活另外设备,则需要进行系统备案,需要后天进行审批。应用软件登录模块的实际图如图3.2所示。图3.2 用户登录子模块实际图3.2.3首页模块系统首页界面是用户登陆之后看见的第一个界面,派卡首页是需要登录才能查看的界面,通过相应的操作可以跳转到相应的功能模块。课程首页分为车牌录入、套餐查询和记录统计。其中套餐查询是由服务器返回套餐分类以及详情查看的模块,记录统计将由服务器返回之前的派卡记录,接下来的就是本系统的车牌录入模块,车牌录入是通过车牌信息进行相关操作的模块。派卡首页模块的实际图如图3.3所示。图3.3 派卡首页模块实际图3.2.4车牌录入模块车牌录入模块是本应用软件重点功能,车牌录入模块是通过输入相应车牌,查找相应车牌信息,对之前有过记录的车牌信息进行显示,已经联系人的添加以及修改,通过添加派卡记录,可对相应车牌的客户进行礼品赠券的派发以及记录。其中车牌的输入可以通过手动输入或者通过拍照识别车牌进行操作,拍照识别是通过手机拍照,然后截取图片,将图片传入底层C+模块,让底层C+识别车牌,然后返回识别出来的车牌。车牌录入模块的实际图如图3.4所示。图3.4 车牌录入模块实际图3.2.5派卡记录查询模块派卡记录查询模块是客户端通过post请求,与服务器后天进行数据交互,获得之前该登陆账号的派发记录,然后通过界面的形式,将数据显示出来。能给让用户对自己之前的派发记录有一个了解。派卡记录查询模块的实际图如图3.5所示。图3.5 派卡记录查询模块实际图3.2.6套餐报价查询模块套餐报价查询模块是本应用软件的对现有套餐显示的界面,在用户在进行派卡之余可以通过套餐资讯了解相应的套餐信息,增加用户的知识面。从了提高用户对套餐的了解,更好的服务客户。给用户带来一个较好的使用体验,会有眼前一新的感觉。套餐报价查询模块的实际图如图3.6所示。图3.6套餐报价查询模块实际图3.2.7设置模块设置模块包含版本更新,默认车牌前缀设置以及缓存,其中首次登录更新缓存。设置模块的实际图如图3.7所示。图3.7设置模块实际图4 项目功能实现4.1启动界面动画实现启动界面在iOS Apps中比较常见,也包括一些桌面应用程序,就是启动应用软件的时候看到的第一个界面。iPhone启动界面分为两种方式,一种是使用系统自带的,按规则定义启动图片名称即可,显示为1秒,要想延长时间,用nsthread sleepForTimeInterval:5.0 ,另一种就是自定义uiivew,加到window中去。由于本应用软件想给用户一个不一样的体验,同时也向用户加入了一个微广告的目的。所以在不影响应用软件正常启动效果的情况下,采用了两种方式相结合。即在应用软件按方式一添加启动画面的同时,在AppDelegate.m对象内的application didFinishLaunchingWithOptions方法里面加入了一个UIView动画,再使用NSTimer让动画结束后隐藏启动画面。这样即有了良好的用户体验,又加入了不会让用户反感的微广告。这种做法已经被业界接受,很多应用软件都尝试着在这样做。4.2网络与数据4.2.1网络通信模块实现网络通信模块负责实现服务器与客户端之间的数据通信功能,iOS系统的网络通信对象是NSURLConnection,NSURLConnection提供对网络异步加载请求的支持,并且将获取的数据返回给代理方法connection didReceiveData。提供了简单的接口去创建和取消连接,同时使用delegate方法去支持连接过程的反馈和控制 。在实际开发中直接用的不多,所以对NSURLConnection进行了封装,实现了DownLoad类和DownLoadFinish类。在原有单条数据通信外,实现了多线程下载,也就是同时多条数据下载。DownLoadFinish为单例类,整个应用软件中使用的DownLoadFinish都是同一个对象,方便了对服务器通信的管理。日常生活中,用户可能在不同的网络环境下使用应用软件,因此使用了Reachability和netReachability来检测网络环境的连接情况,Reachability给定了三种网络状态,如表4.1所示。应用软件启动的同时会对网络环境进行检查,在AppDelegate.m中完成此工作。在应用软件运行的过程中,应用软件会对网络连接做实时的检测,当网络通信故障或者网络环境切换时,会给用户一个UIAlertView的提示。表4.1 Reachability三种网络状态网络状态NotReachability无连接Reachability Via WiFiWiFi网络连接Reachability Via WWAN3G/GPRS网络连接在应用软件中,检测网络环境的相关核心代码如下所示。a)检测当前网络环境是否是WiFi+ (BOOL)IsEnableWIFI return (Reachability reachabilityForLocalWiFi currentReachabilityStatus != NotReachable);b)检测当前网络环境是否是3G+ (BOOL)IsEnable3G return (Reachability reachabilityForInternetConnection currentReachabilityStatus != NotReachable);4.2.2 JSON数据解析实现本应用软件的服务器采用Web Service部署,客户端与服务端使用HTTP协议进行数据通信,使用get或者post方法与服务器交互,最终返回JSON格式数据。JSON指的是JavaScript对象表示法(JavaScript Object Notation),是轻量级的文本数据交换格式,独立于语言和平台,具有自我描述性。从iOS5开始,APPLE提供了对JSON的原生支持(NSJSONSerialization),但是为了兼容以前的iOS版本,可以使用第三方库来解析JSON。JSON解析常见的iOS解析方法有TouchJson、 SBJson 、JSONKit 和 iOS5所支持的原生的JSON方法等,其中系统的API的解析速度最快,我们在工程项目中选择使用。4.3登录模块4.3.1用户登录子模块实现本应用软件用户登录子模块主要实现用户账号密码信息的输入、验证,最终完成登录。由于用户账号密码的保密性,登录数据请求参数做了加密处理,可以有效的保护用户隐私。登录请求参数见表4.2,用户登录核心方法见表4.3。表4.2 登录请求参数表参数类型说明accountString登录账号userPasswordString登录密码表4.3 登录核心方法表核心方法方法说明- (void)btnClick:(UIButton *)btn响应用户点击页面登录键事件,实现登录功能。- (void)didloginAction向服务器发送登录请求处理,并反馈用户信息。- (void)DownLoadFinish记录服务器返回的用户信息到本地,供下次启动应用软件使用。用户登录子模块使用了UITextField、UIImageView、UIButton、UIAlertView等控件进行视图的布局,应用软件登录子模块的实际图如图4.1所示。图4.1 用户登录子模块实际图4.4登陆模块实现4.4.1登陆实现登陆需要的UUID是由KeychainItemWrapper第三方封装实现,首先,简单介绍一下UDID这个东西:UDID是Unique Device Identifier的简称,也就是唯一设备标识的意思。于iOS SDK中取得的方法是UIDevice的一个叫uniqueIdentifier的NSString*,由于这个ID字符串是基于设备的,应用开发人员可以通过获取此ID来用于记录区分设备。正是由于这个特性,可能会导致一些隐私等等相关的问题,Apple于iOS5中将这个UDID废掉了,SDK中被标记为了Deprecated,虽然为了兼容低版本的源代码而继续存在,但并不会再返回任何有实际意义的东西。在做派卡登陆这个功能时,发现还是需要用到可以识别设备的东西的,对设备经行备案,使一个账号只能激活一台设备,经过一段时间的研究、试验,发现了这个应该还算是比较靠谱的方法其实早在UDID被deprecated的消息刚出来时,就已经有很多人开始研究对策了,我也google到了各种五花八门的解决方案,最后还是觉得这个UUID的方案比较合适,毕竟是苹果官方文档里推荐的替换UDID的方法.关于UUID的具体说明可以查看下面参考文章中给出的苹果官方文档链接。简单来说,UUID就是一个随机序列字符串生成器,有点像Microsoft Windows的COM GUID生成器的作用,比起自己随机一个字符串的好处就是这东西能够保证唯一性,适用于标记。这样的做法把生成的ID保存起来,下次再用的时候就直接读取已经保存的ID了。显然,那个UUID生成只是个“随机字符串”生成器,并不能像UDID那样保证每次取得的串都一样!保存起来虽然能保证用户再次打开这个应用时,能够获得一致的标识ID,但不能保证用户删除应用重新安装后这个ID的一致性,因为NSUserDefaults只是个像游戏存档一样的东西,游戏删了,存档也就跟着一块删了。所以,这个“存存档”的方法并不是一个比较完善的解决方案,一个更好的做法是利用keychain保存这个生成的UUID。KeychainItemWrapper *wrapper = KeychainItemWrapper alloc initWithIdentifier:deviceIdentifier accessGroup:nil; NSString *uniqueIdentifier = wrapper objectForKey:(id)kSecAttrAccount; NSLog(device_identifier:%,uniqueIdentifier); if (uniqueIdentifier isEqualToString:) wrapper setObject:getuuid() forKey:(id)kSecAttrAccount; uniqueIdentifier = wrapper objectForKey:(id)kSecAttrAccount; wrapper release; 4.4.2备案功能实现备案功能主要账号第一次登入手机无需备案,如更换手机则需进行申报备案、审批。备案也同样需要UUID。代码如下:KeychainItemWrapper *wrapper = KeychainItemWrapper alloc initWithIdentifier:deviceIdentifier accessGroup:nil; NSString *uniqueIdentifier = wrapper objectForKey:(id)kSecAttrAccount; if (uniqueIdentifier isEqualToString:) wrapper setObject:getuuid() forKey:(id)kSecAttrAccount; uniqueIdentifier = wrapper objectForKey:(id)kSecAttrAccount; wrapper release; NSString *strUrl = NSString stringWithFormat:uname=%&DeviceID=%,_textfield.text,uniqueIdentifier; _dlm addDownLoadWithURLString:kADDDEVICELOGAPI_URL andType:8 andPost:YES andPostStr:strUrl;4.5智能拍照识别功能实现智能拍照识别是通过相机拍照,通过第三方库对照片进行处理,将图片传入底层核心C+,底层通过对图片处理,对图片中车牌的符号一个识别,然后将识别结果传回,得到照片车牌的车牌号码。拍照识别功能的实际图如图4.2所示。 图4.2 拍照识别功能实际图4.6定位功能实现定位功能通过苹果自带的定位功能,由于苹果在iOS8.0+下CLLocationManager定位服务需要授权。在Info.plist文件还要加上NSLocationWhenInUseUsageDescription这个key,Value可以为空,。定位功能核心代码如下:- (void)maplocation _locationManager = CLLocationManager alloc init; if (CLLocationManager authorizationStatus = kCLAuthorizationStatusNotDetermined) #ifdef _IPHONE_8_0 if (_locationManager respondsToSelector:selector(requestAlwaysAuthorization) _locationManager performSelector:selector(requestAlwaysAuthorization);/用这个方法,plist中需要NSLocationAlwaysUsa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初中地理特岗教师招聘考试模拟题及备考策略
- 重点护理环节管理措施
- 甲状腺素合成课件
- 甲状腺相关课件获取
- 中国的民族教学课件
- 《飞机梦工厂》教学课件
- 江苏苏州2018-2022年中考满分作文65篇
- 用电设备安全知识培训课件
- 统编版小学二年级语文(上)第六单元测试题(含答案)
- 中外教育简史教学课件
- 第三章 金融远期
- 课堂有效教学课件
- 规范诊疗培训课件
- 人教版七年级英语下册期末复习专练:短文填空(含答案解析)
- 2025年保安证考试题目及答案
- 2025年辅警面试考试试题库目(答案+解析)
- 湖南省长沙市岳麓实验中学2024-2025学年高一下学期6月月考数学试卷
- 初中教师师德培训课件
- 工业机器人讲课件
- 2025至2030中国燃料电池气体扩散层(GDL)行业发展趋势分析与未来投资战略咨询研究报告
- 浙江省杭州市2024-2025学年高二下学期期末物理测试卷
评论
0/150
提交评论