基于iOS平台的车联网移动应用系统设计与实现
2017-09-09翁亚伟周奎
翁亚伟+周奎
摘 要:随着生活节奏的不断加快,人们对车辆的需求和使用越来越多。设计一套完整的基于iOS的车联网移动应用系统,并实现用户管理、预约加油、实时地图、车辆导航、车辆维护、音乐播放、违章查询等功能,方便用户随时随地查看和管理车辆信息,给人们对自身车辆的管理带来了极大便利。
关键词:iOS;车联网;车辆管理
DOIDOI:10.11907/rjdk.171293
中图分类号:TP319
文献标识码:A 文章编号文章编号:1672-7800(2017)008-0116-03
0 引言
随着人们对车的需求的增加,并伴随着生活节奏的不断加快,人们对车辆的管理方式也越发复杂,并且用户对车载移动应用的需求也越来越大[1]。与此同时,由于使用车辆的人群规模在扩大,全国各大城市都出现了堵车、拥挤问题。因此,更加高效便捷的路线规划和更加轻松愉快的出行体验引起了人们的广泛关注和研究。虽然针对车辆管理的移动App并不罕见,但这类 App 不是由厂商开发就是由一些硬件开发商开发,因此要么更加趋向于车辆状态的显示以及开门、开空调、自动倒车等控制,通用性差,要么需要购买配套硬件设备,成本相对较高,安全性也较低。这类软件的特点是通用性差、专业性强,例如BMW的“BMW互联应用”,以及上海博泰昉达公司研发的“iVoka MINI X”。本项目旨在设计开发出这样一款移动应用,帮助用户规划出高效的行驶路线,处理使用过程中的一些繁琐事务,从而有效解决道路使用率过低等问题。
1 系统开发环境及关键技术
1.1 iOS与Swift
iOS系统是苹果公司为移动设备所开发的专有操作系统,所支持的设备包括iPhone、iPod touch和 iPad。与 Android 不同,iOS 系统不支持任何非苹果的硬体设备。iOS设备一般采用 ARM 架构的64位CPU。iOS系统由四层架构组成,分为核心操作系统层(the Core OS Layer)、核心服务层(the Core Services Layer)、媒体层(the Media Layer)及触控应用层(the Cocoa Touch Layer),高层框架对底层框架进行抽象,使得高层框架更适合人们编码和理解。
Swift是一种支持多编程范式和编译式的编程语言,是用来撰写macOS/OS X、iOS、watch OS和tvOS的语言之一[2]。2014年,其在苹果开发者年会(WWDC)发布。设计Swift时,苹果公司有意让Swift与Objective-C共存在苹果公司的作业系统上。Swift的特点是:快速、现代、安全、互动,而且明显优于Objective-C语言。Swift以LLVM编译,可以使用现有的Cocoa和Cocoa Touch框架。
1.2 SQLite
SQLite 是一款轻量级的遵守ACID的关系数据库管理系统[3],它包含在一个相对较小的C程式库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。SQLite引擎不是一个应用程序与之通信的独立进程,SQLite库链接到程序中,并成为它的一个组成部分,其也可被动态链接。应用程序经由编程语言内的直接API调用来使用SQLite的功能,这在减少数据库访问延迟上有积极作用,因为在一个单一进程中的函数调用比跨进程通信更有效率。
2 系统设计
该系统采用 C/S 模式架构,系统分为Linux 服务器端和iOS 移动客户端两个部分。服务器采用Linux系统,软件选用Apache,数据库使用MySQL,开发语言基于PHP,移动客户端将基于iOS系统,本地数据库使用SQLite,开发语言采用Swift,服务器与客户端之间采用JSON格式的數据沟通。
2.1 系统架构
本应用系统的硬件架构为C/S架构,服务器为 Linux 系统,客户端为iPhone等iOS设备。客户端可以通过蜂窝网络、WiFi 等途径访问服务器,客户端与服务器之间的数据交换使用 JSON 协议格式。
本系统客户端的软件架构采用MVC模式,分为模型-视图-控制器(Model-View-Controller)[4]。模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。视图对象是应用程序中用户可以看见的对象,视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象的更改,反之亦然。
2.2 系统功能
本应用系统的目的是方便用户管理和查看车辆信息,并且还可以通过本应用使用与车辆相关的服务并查看车辆相关的资讯。基于这些需求,客户端包含以下功能:①预约加油:可以通过提前绑定的用户信息或者临时输入用户数据生成一份加油订单,发送给加油站,此订单会生成二维码,加油站可以扫码完成订单;②实时地图:显示地图和当前汽车的位置、路况信息和周围的加油站、维修站等,所有的位置信息都是以手机作为载体来替代车辆位置;③车辆导航:可以输入起点、终点以及途经点,自动计算选择最优路线,实时向用户导航,告诉用户如何驾驶,并且需要显示路况信息;④车辆维护:假定汽车屏幕可以显示车辆当前信息的二维码以供用户扫码,系统将读取车辆当前状况信息并保存到服务器,并且当车辆出现状况时能够及时推送到客户端告知用户;⑤音乐播放:进入应用可以播放音乐,用户可以自行选择音乐,音乐可以在后台播放;⑥违章查询:可以根据用户保存的信息,自动查询车辆违章情况,解析并显示违章信息。
3 系统实现
本系统服务器端基于Linux系统,采用PHP语言开发;客户端是基于iOS平台,开发采用 MVC模式,服务器与客户端之间的数据交流则通过JSON 实现。endprint
3.1 服务器端
服务器采用LAMP平台,所有客户端的 HTTP 请求将直接被Apache服务器处理[5],而相关的动态页面将被Apache交由PHP 处理,其中涉及的数据库请求也由PHP查询后转交于Apache发送给接受者。
整体而言,服务器负责数据的云端存储、监控和处理。在用户数据管理功能中,客户端设置的数据将通过HTTP 请求发送至服务器,服务器通过处理和优化,判断数据是否合理,最终将正确的数据存储到服务器的MySQL 数据库中。其中,对于数据的操作采用单例模式,由一个统一的接口对数据库进行增删改查等操作。
3.2 客户端
客户端的本质是对数据的处理和展示,为了防止用户在车辆使用过程中过多地将注意力放到手机上,作了如下处理:在APP的UI设计上,客户端采用简洁的设计语言,尽量排除一切干扰,留下最重要的数据[6];在操作上,客户端尽力优化操作步骤,减少不必要的操作,使用户通过最少的步骤完成一次处理。
客户端基于iOS 系统开发,使用Swift 3.0作为开发语言,由于Swift语言的严谨,使得客户端更加稳定。本地数据库使用SQLite系统,并通过 FMDB 框架对数据库进行增删改查等操作。在网络数据的获取上通过Alamfire构建底层对HTTP的POST/GET请求[7];获取到数据后会将数据由 JSON数据转化为Model,先存入数据库,然后由MVC 中的Controller对Model进行解析使得View显示数据。
3.3 数据库
本系统的服务器端采用MySQL数据库,而客户端采用SQLite数据库,但是为了简化开发流程,两者大部分的数据表都相同。这样,在数据获取上,客户端获取服务器的数据时,服务器只需要作简单的处理并将Object转化为JSON后就可以返回给客户端;而客户端获取到了数据后也只需要将 JSON转化为Model类型并进行本地存储和使用即可。
在数据库设计上,两者共同的表大约有6张:①用户表(用户编号、用户名、邮箱、密码、头像、DeviceTocken);②车辆表(车牌号、品牌、型号、省份编号、城市编号、发动机编号、车架号、加油类型、门、座、用户编号);③订单表(订单号、姓名、时间、加油站编号、加油数量、加油单位、加油类型、是否新订单、用户编号);④加油站表(加油站编号、名称、地点、地名、详细地址、品牌名、加油站类型、折扣、经度、纬度、离当前距离);⑤油价表(加油站编号、油名、单价);⑥维护信息表(维护编号、里程数、油量、车灯状态、发动机状态、变速箱状态、时间、车牌号)。由于这6张表承担了系统中大部分的数据存储,因而它们的简化使得项目条理更加清晰,结构更加严谨。
3.4 数据交互
服务器使用PHP编写,客户端与服务器端的交互采用HTTP协议(POST、GET方式)。在数据交互过程中采用 UTF-8格式编码数据,并使用JSON来组织数据传输,JSON易于传送和编码[8]。在用户产生相应操作后,客户端会触发向服务器的请求,服务器接收到请求后,根据请求在数据库中查找相应数据,再把数据组织成JSON格式通过HTTP返回给客户端。客户端接收到回复后,将JSON数据解析组建成Model示例并存储一份到本地缓存数据库,然后展示数据。
4 结语
本文在介绍系统开发环境及关键技术的基础上,详细探讨了基于iOS平台的车联网移动应用系统实现过程,该系统能够实现用户管理、预约加油、实时地图、车辆导航、车辆维护、音乐播放、违章查询等功能,给用户的车辆管理带来了极大便利。经测试,该车辆网移动应用系统运行良好。但本系统也存在一些不足,如:系统安全性有待提高、容易被黑客利用和蓄意攻击、在安全防护方面需深入研究、对于车辆的硬件管理过于薄弱,等等。这些都有待后续进一步研究解决。
参考文献:
[1] 程刚,郭达.车联网现状与发展研究[J].移动通信,2011,35(17):23-26.
[2] 杨雯.Swift 语言研究[J].电子技术与软件工程,2015(11):254-255.
[3] 倪天龙,张贤高,王培.数据库SQLite在嵌入式系统中的应用[J].单片机与嵌入式系统应用,2005(10):35-37.
[4] 胡辉.IOS 环境下使用MVC模式进行APP开发的设计思路探索[J].数字技术与应用,2015(6):204-204.
[5] 桑一梅.基于LAMP的高性能 Web服务器的架构[J].电脑学习,2010(6):44-46.
[6] 岳琳.智能手机UI界面设计分析探讨[J].计算机光盘软件與应用,2014,17(6):83-84.
[7] 徐健,王涛.HTTP/1.1的分析[J].西南师范大学学报:自然科学版,2004,29(2):315-319.
[8] 高静,段会川.JSON 数据传输效率研究[J].计算机工程与设计,2011,32(7):2267-2270.endprint