APP下载

基于iOS的“智行黔中”手机APP设计

2016-07-04常雄刘卓崔忠伟王礼琴陈盼黄茂

电脑知识与技术 2016年15期
关键词:内存二维码定位

常雄+刘卓+崔忠伟+王礼琴+陈盼+黄茂+胡毕松

摘要:随着科技和无线应用产业不断地发展,手机也开始被越来越多的人使用。如今,人们已经进入了移动互联的时代,手机正在慢慢改变着人们的生活方式。现在的智能手机可以提供人们安装软件、游戏、上网等第三方服务上提供的功能。因此,人们使用无线应用软件(APP),为手机用户提供旅游资讯服务,实现了游客便捷旅游的梦想。自动导航、定位搜索、酒店和景点等信息的查询等功能,让用户实实在在的体验到它的带来的方便。该文是基于iOS移动开发平台,采用Objective-C语言,设计的旅游服务的APP。

关键词:iOS;Objective-C;ASIHTTPRequest;地图导览

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)15-0078-03

1 绪论

1.1项目背景及意义

智能手机的出现也带动了很多行业的发展,其中旅游行也受到了巨大的影响。

随着人们生活水平的提高,现在旅游消费的人也越来越多,这也带动了中国很多景区的发展。贵州作为一个旅游大省,拥有的旅游资源数量多、类型齐的特点,如今世界目前已设计的15种自然旅游资源中,它的地质、地层是全国最全的,环境的多样、风景的独特性、气候的宜人性、资源的丰富性、民族风情的多彩性等特征,使得他有很大的可持续发展的潜力。随着政府对旅游行业的重视,未来贵州的旅游业将会得到快速的发展。

随着智能手机的普及,越来越多的人在使用和消费手机。近些年我国移动互联和智能终端的快速发展也带动了大量的用户使用智能手机和其他的移动设备。2012年我国的网民增加量为5000万,达到了5.5亿,其中手机网民就有3.88亿,网购人数有2.1亿。

目前中国智能手机行业品牌繁多,比如三星、苹果就占据着我国智能手机大部分的份额,其中苹果依靠时尚的产品设计、良好的用户体验具有完美构架的iOS系统吸引着大批的中国消费者。据研究机构UBS的数据显示,中国的iPhone销售现在占到了全球总销量的36%,中国未来可能会成为iPhone最大的市场。针对上面我们所讲述到的两个内容,设计一款基于iOS的智能旅游的APP是非常有必要和有吸引力的。所以在这个大背景下我们提出并设计了这个课题项目。

2 相关技术的概述

2.1 iOS的介绍

iOS系统是苹果公司2007年1月9日在Macworld大会上公布的智能操作系统,它的是内核基于苹果的Darwin系统的类Unix的商业操作系统。最初是设计是给iPhone使用的,后来有套用到了iPod touch、iPad和Apple TV等苹果产品上。iOS系统不仅有绚丽的界面体验,还支持丰富的手势操作如滑动、轻按、旋转和挤压等,以及其强大的图像处理功能和传感器的支持等功能,是其受到广大消费者的喜爱。除了这些它还有云存储iCloud和即时通讯iMessage等功能。作为一款手机操作系统,iOS的设计过程是在Xcode IDE集成设计环境下进行的。iOS的框架是由四个部分组成他们分别是:

点触层(Cocoa Touch Layer)、媒体层(Media Layer)、核心服务层(Core Services Layer)以及核心操作系统层(Core OS Layer)。

2.2 iOS的设计环境

2.2.1 Xcode与Objective-c

Xcode IDE作为iOS的应用程序集成环境主要由Xcode、Interface Builder和Instruments三部分组成。iOS的设计工具只要是Xcode,Xcode主要用于对程序代码的编写、编译、运行和调试。Interface Builder的功能可以使设计者通过拖拽描绘程序的布局,也就是提供可视化的设计。Instrument可以对内存的申请、释放及泄露进行监管,所以它主要用于监测应用测序运行时的内存使用的情况。

了解并安装Xcode,我们就可以在Xcode上进行程序的设计,Objective-C是iOS上设计使用的标准语言,他是C语言加上面向对象的特性,可以说是C语言的超集。Objective-C最重要的一个特点就是它不支持垃圾的回收,它的内存管理需要手动来实现。所以我们在编译过程中需要引入自动释放池和引用计数两种内存管理机。

2.2.2内存管理

Objective-C没有自动垃圾回收的机制,所以内存的管理需要手动来实现。这就意味着设计人员必须对何时创建对象、保留对象和从内存中释放对象都要进行有效的控制。因为在iOS的设计过程中很多程序崩溃的请况都与内存管理不当有关。

内存的管理Objective-C中的重难点,它依赖于一个引用计数的内存管理系统,Objective-C提供了两套内存管理的机制:

第一:引用计数。引用计数的使用就是调用NSOject中的retainCount属性对内存引用进行计数。

第二:自动释放池。自动释放池方法就是调用NSOject类中autorelease方法对内存进行管理。本项目做的是手机APP的设计,所以一个APP是否进行了内存的优化,它对这个APP运行时的速度、流畅度等都有着根本性的作用。

3 项目介绍

3.1 项目介绍

本项目是基于iOS平台设计的APP, 它为用户提供了贵州主要景点和酒店等信息的查询服务,以及提供了实时的定位导航等功能。主要功能简介如下:

1)注册登陆功能。游客通过在线填写个人信息(姓名、电话、邮箱等),系统对用户的手机号、邮箱进行唯一性校验;注册成功后,用户输入设置好的密码进行登陆。

2)实时的餐厅和酒店的信息。游客可以通过移动互联网络的接入服务获得即时的餐馆和酒店的信息。

3)实时的地理信息。游客可以通过智能手机导航获得有效的地理信息服务。

4)实时的信息获取分享。游客可以通过与社交网络的连接及时的分享。

5)二维码的扫描。游客可以通过扫描二维码的方式,下载我们的应用软件。

3.2 智慧旅行

本项目的名称叫做“智行黔中”,而什么是“智行”呢?这个取名其实是从智慧旅游得来的,智慧旅游就是指我们利用云计算,物联网等技术,使用终端设备通过移动互联感知旅游资源,旅游活动,旅游经济等。简单地说人们可以通过的自己的移动终端设备实现上网互动,将自己的旅游行程安排进入触摸时代。

4 项目实现

4.1 项目简介

本项目是基于iOS平台定制的旅游APP文章主要讲述了我们项目在iOS平台下实现这款APP的功能,其中包括iOS环境的搭建和iOS在内存处理上的管理和介绍,以及iOS于web的连接和GPS定位等功能的实现。Xcode和Objective-C 语言作为集成的设计环境,采用开源网络访问框架ASIHTTPRequest 实现网络的高效访问,并对地图导览应用实现和业务需求的进行了分析。

4.2 ASIHTTPRequest

我们访问网络的步骤是使用web server技术,通过http协议请求确定地址URL、建立请求、开始连接、等待网络处理和连接完成,处理结果过程,经过对URL对资源的定位来实现和服务器数据传输。

很多时候我们使用iPhone和iPad等只是作为一个终端和载体,因为我们经常需要使用的信息和服务是来自web server服务端,而iphone客户端的资源是非常有限的,如它自身也带有的数据库sqlite等,不过也只是非常少量的客户端的数据操作而已。所以iOS中web的连接是非常重要的一部分,当然iOS的服务端功能也是非常强大的。本目主要是在开源ASIHTTPRequest框架下进行的。

ASIHTTPRequest是一款极其强劲的http访问开源项目ASIHTTPRequest框架是基于OBjective-C的优秀的第三方http框架。

ASIHTTPRequest框架下的两个主要的网络请求GET和POST请求。 GET的语句是获取指定的URL上的资源;POST请求的语意是对指定资源“追加/添加”数据,也就是对指定资源“追加/添加”数据所有数据对用户来说不可见。当传输大量数据时,和上传文件只能使用POST。在iOS设计中,需要和WEB服务器进行交互,我们使用web server技术,通过web协议提供服务和URL定位资源,并保证不同平台的应用服务可以相互操作。目前web server实现方案有rest、soap和XML-RPC。我们使用数据交互格式是JISON格式:一种轻量级的数据交换格式,由于Web和移动平台设计对流量的要求是要尽可能少,对速度的要求是要尽可能快,而轻量级的数据交换格式JSON就成为理想的数据交换格式。 客户端与服务器端后台到的数据交互还需要遵循http协议。有了以上的基础即可以实现与web连接。

4.3 地图应用与卫星定位

4.4.1 地图的应用

如今智能机基本上都带有GPS功能,每当我们出差或者外出旅行时,通过智能手机查看地图和卫星定位导航这些功能都能给我们带来极大的方便,在我们设计的APP中你只需要点击地图图标就可以方便地查询到你想要的地图并且还可以实现卫星的实时的定位。

在iOS中,定位服务和地图应用是两套完全不同的API,但是它们又是紧密相关的。首先讲的是定位服务,在iOS设备中提供了三种不同途径的定位服务分别是:Wi-Fi、蜂窝式移动电话基站、GPS卫星。 iOS中定位服务主要使用CoreLocation框架,定位时主要使用的类是:

1)CLLocationManager。用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备

进入或离开某个区域,还可以获得设备的运行方向等。

2)CLLocationManagerDelegate。它是CLLocationManager类的委托协议。

3)CLLocation。该类封装了位置和高度信息。

上述的类能实现的查询只是一些地理上的经度和纬度的数据,对我们一般人而言是很难看懂这些数据的,所以我们使用另一项技术地理信息编码来解决这个问题。首先,我们将信息封装在CLPlacemark类中,CLPlacemark类有很多属性:

1)subAdministrativeArea。行政区域附加信息。

2)locality。指定城市信息。

3)subLocality。指定城市信息附加信息。

4)thoroughfare。指定街道级别信息。

地理信息反编码使用CLGeocoder类实现,CLGeocoder类中进行地理信息反编码的方法是:

-(void)reverseGeocodeLocation:(CLLocation*)locationcompletionHandler:

(CLGeocodeCompletionHandler)completionHandler

其中location是要定位的地理位置的对象,completionHandler是指定一个代码块,用于地理信息反编码之后的回调。

最后我们还要加上地理信息编码的方法,因为当游客查询地点时,如果地点的名字使用很普遍,比如“小河”这样的地名,所以使用地理信息编码来指点区域范围的查询:

地理信息编码也是采用CLGeocoder类,我们用到的它的属性有:

geocodeAddressDictionary:completionHandler:。通过指定一个地址信息字典对象参数进行查询。

geocodeAddressString:completionHandler:。通过指定一个地址字符串参数进行查询。

geocodeAddressString:inRegion:completionHandler:。通过指定地址字符串和查询的范围作为参数进行查询,其中inRegion部分的参数用于指定查询范围,它是CLRegion类型。

4.4.2 卫星定位

用户使用定位服务时,需要调用GPS硬件来获取当前的位置信息。在iOS中我们可以使用两种方法来实现定位服务,一种是借助谷歌的web地图API设计地图应用,这种方法大多使用的是web技术,而不是本地技术。第二种是使用Map Kit API技术设计地图的应用。本项目就是使用Map Kit API设计的。

Map Kit API的核心类是MKMapView,它是显示地图的视图,它的委托协议是MKMapViewDelegate。使用Map Kit API时,需要导入MapKit框架,引入头文件MapKit/MapKit.h和引入MapKit.Framework,并且还需要声明MKMapViewDelegate协议。

实现定位后我们需要添加标注来显示地名等信息,在地图上添加标注点需要两个步骤::第一步是触发添加动作,第二步是实现地图委托方法mapView:viewForAnnotation。如果有多个点需要标注,我们可以使用MKMapItem的类方法。

由于用户使用定位时的地理位置是动态变化的,所以用户在地图上的信息是需要不断的动态更新的。MapKit提供了跟踪用户位置和方向变化的API,在设置时我们只需要开启启地图视图的showsUserLocation属性,并设置方法setUserTrackingMode:就可以了。

4.4 二维码的实现

二维码作为近几年的一项新兴的技术,在移动设备上是非常流行的一种编码方式。如今二维码随处可见,我们可以在各式的商品、海报、电视上等等的很多的地方看到二维码的身影。而手机能够提供生成二维码和扫码二维码的功能又成为了二维码很好的应用平台。现在我们打开手机都会看到很多APP都有二维码功能。二维码前身是一维码,一维码由于受信息容量的限制等问题,使用不方便,且效率低。然而二维码的出现解决了很多一维码的问题,二维码具有高密度、高可靠性以及查询便捷和易于普及等特点,这也是它能迅速流行的重要原因。

二维码是由黑白相间的图形来记录信息的,它是把图像显示信息还原为计算机的字符代码0和1.扫描二维码的过程是:

1)通过终端拍照来获取二维码的图形。

2)通过解码软件对扫描到的二维码进行扫描。

3)通过应用软件对二维码的信息处理并为用户提供服务。

目前在iOS中实现二维码的扫描的两大开源组件是ZBar与ZXing。它们各自的特点是不同的,ZBar在扫描灵敏度上,和内存使用上相对于ZXing上都是较优的,但是对于 “圆角二维码” 的扫描就很困难。,而ZXing是由 Google Code上的一个开源的条形码扫描库,在iOS中只是OC代码进行了封装而已,并且也没有维护和更新。所有我们使用ZBar来实现我们的项目。

5 结束语

本课题介绍的是基于iOS的智慧旅游的APP的设计和实现。在整个过程中我们首先分析了智能终端和旅游的发展。第二,并介绍了iOS的设计环境。第三,介绍了在ASIHTTPRequest框架下实现web的连接。第四,介绍使用GPS功能实现地图查询和卫星定位功能。

本项目目前已经过初步的测试,由于时间和技术水平有限。目前还有很多功能有待完善,对于本课题未来的展望,我们会在添加实现景点在线支付购票,还有在线打的等功能。

参考文献:

[1] 刘丽, 殷晓翠. 基于地理位置的APP定制旅游服务研究[J]. 电子制作, 2014(21).

[2] 刘彦. 基于iOS环境的应用软件交互设计策略[J]. 信息化研究, 2011(5).

[3] 崔维, 李晖, 刘佳佳, 王艳娟.基于iOS的企业APP客户端的设计与实现[J]. 科技创新与应用, 2014(24).

[4] 黄天柱, 涂时亮. iOS设计UITableView 加载图片的内存管理[J]. 计算机系统应用, 2012(9).

[5] 谭家龙. 基于iOS电子地图查询系统的设计与实现[J]. 无线互联科技, 2013(6).

[6] 孙悦. 郝凌冰.基于iOS平台的图书馆图书检索系统[C].中国计算机用户协会网络应用分会网络新技术与应用年会, 2013.

[7] 如何在iOS上展现Web Service数据[EB/OL]. http://www.2cto.com/kf/201304/200576.html.

猜你喜欢

内存二维码定位
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
二维码
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
“春夏秋冬”的内存
找准定位 砥砺前行
让严肃的二维码呆萌起来
二维码,别想一扫了之
青年择业要有准确定位
基于内存的地理信息访问技术