APP下载

基于iOS平台的华阳社区资讯共享服务“乐助”的设计与开发

2018-04-21胡俊平热依汗古丽艾尔肯

关键词:闲置客户端消息

胡俊平,谭 颖,热依汗古丽·艾尔肯

(西南民族大学计算机科学与技术学院,四川 成都 610041)

随着信息技术的成熟,尤其是移动互联网的迅速发展和快速普及[1],“互联网+”在各领域产生了革命性的影响.共享经济也在此背景下孕育而生且已快速发展起来,现今正以狂风暴浪之势席卷全球,这种经济模式越来越被更多的人所接受,通过共享资源来解决其在工作、学习、生活等各方面的需求,共享将逐渐作为安排工作、学习、生活的重要首选.在国外,以Uber、Airbnb为代表的一系列共享经济服务企业改变着人们的生活方式.在国内,共享经济也迅速涌现出滴滴、Mobike等一批追随者,给人们出行带来了极大方便[2].

改革开放以后,我国经济得到了质的飞跃,人民生活质量日益提高,消费能力增强,同时必需面对社会闲置产能过剩的问题.大众生活多元化,所需资源丰富多彩,信息多种多样,但由于信息不对称,导致大量资源闲置利用率不高.

本项目选取本人居住的华阳社区进行研究,设计并开发一款资讯共享APP——乐助,联结资源供需双方,整合居民闲置资源,降低居民获取信息的成本和在一定程度上减少信息的不对称.借鉴“闲置资源—暂时转移使用权—获取收益”的模式[3],实现邻里互助,资源共享[4].

1 相关技术

1.1 iOS系统

在众多的移动终端操作系统中,iOS系统高度封闭,软件下载来源较为单一,保证其比市面上的其他系统更为安全.iOS系统均是运行在苹果设备之上,软硬件可以高度配合,为此运行更为流畅和稳定[5],系统扁平化设计,界面简洁,美观,轻量……优点多如繁星,受到众多用户的青睐,占据着移动市场的半边天.“乐助”APP基于iOS平台设计与开发,具有极大的优势.

1.2 JAVA

JAVA是面向对象语言中使用较为广泛且在写后端方面优势突出,JAVA自带虚拟机使得其具有平台独立性的特质,能适用于多中平台;JAVA的结构完整,它省去了多继承、指针的概念、运算符重载等,使得语法较为简单;JAVA设计语言专门设计了垃圾自动回收机制,它会自动回收不再被任何对象引用或持有的垃圾空间,节约大量人为释放空间的成本.

1.3 MySQL

数据存储则采取MySQL数据库.MySQL是比较好用的关系型数据库,亦是目前市面上广为使用的开源数据库.MySQL内配置的SQL语言是针对数据库访问时最常用的标准化语言[6],支持SQL Server的迁移,支持对 Java、C#、PHP 等的 API,以及通过 Memcached的API以及NoSQL访问InnoDB所带来的更好的开发速度[7].MySQL广泛应用于网站、嵌入式应用、大数据等领域.

2 系统模块设计

本设计是基于iOS平台的社区资讯共享服务“乐助”iPhone应用软件.手机客户端通过无线访问点连接服务器端进行通信来实现社区用户在客户端的各种操作.用Objective-C语言来编写出手机客户端,而服务器端则由JAVA语言与MySQL数据库结合来编写.两者通过HTTP和UDP协议进行通讯,传递信息全部采用JSON格式[8].

2.1 系统整体结构

本系统采用经典的B/S三层模式,即数据层、应用层及表示层,它们从三个层面负担了整个系统的正常运行工作[9],具体结构如图1所示.表示层向应用层发送HTTP请求并显示应用层响应的JSON数据;应用层主要响应表示层的HTTP请求、处理业务逻辑及对数据层返回的数据格式化处理;数据层则主要是响应服务层及担任整个应用的数据仓库[10].

图1 系统结构Fig.1 Structure of system as a whole

2.2 系统模块设计

项目组成员多次深入华阳社区,实地采访居民,获取第一手需求.本系统包含的4个主要模块:用户管理模块、资源管理模块、订单管理模块、反馈/投诉管理模块.它们各司其职,独立承担不同的职责,最终却又组合成一个完整的华阳社区咨询服务“乐助”系统,具体的功能划分如图2所示.

图2 系统功能划分图Fig.2 Functional division of the system

2.2.1 用户管理模块

用户管理模块主要承担的任务是:用户注册、实名认证、用户登录验证等工作.用户注册时,系统会实时验证当前账号是否被注册过、是否包含非法字符,验证通过后直接将当前注册成功的新用户存入到用户数据库中;因本系统中涉及用户的财产安全,必须设置实名认证功能,目前是系统管理员人工验看身份证信息;在用户登录环节,该模块主要是对账号和密码进行校验,防止恶意登录;在用户注册成为会员后,该模块还提供修改个人信息功能,允许用户根据自己的需求在平台的要求下可以修改自己个人信息.

2.2.2 资源管理模块

资源管理模块是整个系统的核心模块,承担着审核用户上传的闲置资源信息、审核用户资源诉求信息、对资源信息的增删改查等重要任务.用户分享的闲置资源是平台的核心功能,必须对资源的名称、类型、型号、服务价格等信息做严格的审核,保证资源信息的真实性;与此类似,必须对用户发布在平台上的资源诉求的类型、描述、价格等信息做筛选,将违法、违规、不符合平台协议的诉求驳回;闲置资源和资源诉求成功存入数据库中后,就涉及到信息的增删改查操作,这也是资源管理模块的核心功能.

2.2.3 订单管理模块

订单管理模块主要是对资源流通过程中状态变化的管理,监管资源的流通状态.首先,对新提交的订单进行审核,校对用户填写的收货地址、收货人等信息,确保订单能被正确接收;其次,新订单审核通过后,该模块负责监控订单的接单、取消订单、付款、收货、双方互评等一系列状态.

2.2.4 反馈/投诉管理模块

反馈/投诉管理模块主要目的是为了收集用户对平台的使用情况的信息,通过分析用户的反馈和投诉,定期增加或删减平台的功能,改善用户体验度.

3 系统实现

系统均在 Mac环境中进行研发,客户端是在Xcode8.3编码工具上编写完成,而服务端则是使用JAVA和MySQL组合的模式开发,所有技术都比较成熟,得到业界的认可,平台运行的概要流程如图3所示.

3.1 服务端

3.1.1 数据库

该系统的设计过程中用到了Core Data和MySQL两种数据库.Core Data将数据库的创建、表的创建、对象和表的转换等操作封装起来,开发人员在对数据库操作时,不需要使用SQL语句,极大的简化了操作,广受苹果公司的推崇,用于苹果客户端缓存数据[11].MySQL的核心程序采用完全的多线程编程,有一个非常灵活而且安全的权限和口令系统,且可支持多种操作系统平台,适合用于服务器端保存用户信息[12].

通过对咨询分享服务系统业务需求的分析,抽象出四个主要实体:用户、闲置资源、资源需求、服务订单.根据用户发布的内容不同,分为两个主线,画出两个不同的局部视图.首先,确定两个视图的范围;其次,确定每个部分的实体;而后,需要识别出这些实体间的联系;最后,分配实体以及实体间联系的属性.最终画出如图4所示的(a)发布闲置资源E-R图和(b)发布资源需求E-R图.

图3 系统运行流程图Fig.3 Flow chart of system operation

图4 系统主要E-R图Fig.4 The main E-R chart of system

在分析清楚逻辑设计的基础之上,将E-R图转化成二维关系表格.本系统中最核心的数据是存储在用户表(tbl_User)和闲置资源表(tbl_Resource),两张表的物理结构如表1和表2所示.

用户表、闲置资源表中的内容都是动态生成,注册成功一个用户生成一条用户数据,用户发布一个闲置资源则生成一条闲置资源数据,这部分数据直接由代码自动添加到数据表中,系统管理员也可以直接在数据表视图中主动添加.根据需求,部分数据需要管理员提前导入,如资源类型、需求类型、付款方式等.

表1 用户基本信息表Table 1 tbl_User

表2 闲置资源信息表Table 2 tbl_Resource

3.1.2 JAVA部分

JAVA程序运行在服务器端,承担系统业务逻辑的处理工作,是分析数据的关键部分,是连接客户端和数据库的纽带.在本研究中JAVA程序承担对数据库的增删改查操作、数据的校验及消息的轮询功能,它作为功能层的核心元素是整个系统更具有智能化的特征.以下就以用户上传闲置资源为例做简要说明,具体流程如图5所示.

图5 用户上传闲置资源流程Fig.5 Flow chart of user upload idle resource

如图5所示,服务端首先打开接收客户端数据模式;第二步是JAVA部分接收到用户端上传的闲置资源数据;第三步是JAVA部分先对数据进行整合分析;第四步JAVA处理逻辑部分对数据进行校验,若是合法数据则直接将数据自动添加到数据库中,否则反馈到客户端提示用户重新填写资源数据;第五步是判断数据是否成功添加到数据库中,若添加成功则反馈到客户端提示用户数据已提交成功,流程结束,否则重新再将数据添加到数据库中.

用户上传资源需求的流程也与闲置资源的上传流程类似,此处不再赘述.以上就是JAVA程序部分在客户端与数据库交互及处理业务逻辑所发挥的主要作用.

3.1.3 客户端与服务端通信

①客户端根据HTTP和UDP传输协议向服务器传输数据

用户编辑完聊天内容点击发送按钮后,将消息内容、消息类型、发送者ID、接收者ID等必填参数按照HTTP传输协议传递给服务器,此时根据第三方网络框架AFNetworking的回调函数监听服务器返回的数据,采取不同的操作.

用户根据UDP传输协议接受对方消息,成功接收到UDP消息后主动给消息服务器推送一条接收成功的信息,告诉消息服务器不用在推送该条消息.与此同时,解析出UDP消息中所包含的消息ID,通过消息ID再次向服务器发起HTTP请求,获取该条消息详细参数.

②服务器端返回数据

服务器接收到客户端发送的消息.第一步,根据事先约定的消息传送规则及组合规则检查消息,若通过检测则直接存入消息数据库中,并向客户端传回消息存储成功的标志;若检测失败,则数据不入库,并返回失败标志;第二步,消息存储成功后,消息轮询服务器会自动读取消息表中的数据,并将本条消息的ID、发送者ID及接收者ID重新包装对外发送UDP消息,直到对应的用户接收到该条消息为止,或者一定的时间后自动取消对该条消息的发送,节约轮询服务器资源.

3.2 客户端

3.2.1 客户端整体功能划分

根据系统模块设计,客户端的功能模块划分为:首页、发布、订单、消息、个人中心.首页模块主要是用于资源列表的展示、APP使用导航、搜索资源等;发布模块分为直播发布和图文发布,要求用户按照平台协议填写所要发布的闲置资源和资源需求的详细信息;订单模块展示正在进行的订单和预约订单列表,即只展示未完成的服务订单;消息模块主要展示系统消息和私聊消息,系统消息显示的是平台的各种通知信息(如更新消息、公告),私聊消息显示的是用户之间沟通资源详情的信息;个人中心模块则展示个人基本资料、实名认证、历史订单等等信息.客户端具体功能模块划分如图6所示.

图6 客户端整体功能划分Fig.6 Functional division of the client

3.2.2 注册界面

注册界面主体使用UITableView控件,自定义了UITableViewCell控件显示用户信息,利用UITextField控件接收用户填写的信息,调用了系统相机和系统相册选择上传身份证照片,用UIImageView控件展示身份证照片.布局采用手写UI,xib和storyboard三种方式嵌套使用,整体布局使用storyboard,单页面布局使用xib,细节布局直接手写UI[13].

3.2.3 直播分享资源

本项目直播功能主要是用于直播分享闲置资源和直播发布资源需求,由于直播开发技术难度大,成本高昂,本项目组选择使用三方视频服务.

目前市面上比较流行的视频服务提供商有阿里云视频、腾讯云视频、七牛直播云等,经过综合对比,本项目最终选择了七牛直播云.七牛进入直播领域做直播解决方案较早,直播技术较为成熟,它走精品路线,侧重于提供直播服务.由于七牛提供详细完整的开发文档、一对一QQ群技术支持,本项目组只花了一天时间就将直播功能集成成功,大大节约开发时间.

3.2.4 聊天功能

客户端聊天实现使用GitHub上的第三方框架CocoaAsyncSocket中的 GCDAsyncUdpSocket,该框架是基于Socket编程,是用UDP协议进行通信的一组编程接口[14],本地聊天数据缓存使用苹果自带的Core Data数据库.

聊天分为两种形式:程序在前台运行和程序在后台挂起,两种聊天形式对数据的处理方式截然不同.

程序在前台运行:用户发送聊天消息是通过HTTP协议实现;消息发送成功之后将本条消息存入客户端本地数据库中,以便以后调用聊天记录;用户接收消息是通过UDP协议实现,成功接收到消息后直接存入客户端本地数据库中,然后再在聊天界面显示 接收到的消息,消息传递的具体流程如图7所示.

图7 程序在前台运行时消息的发送流程Fig.7 The sending process of the message when the program runs in the foreground

程序在后台挂起:用户不能发送消息,只能接收来自苹果信息推送服务(APNS)的消息[15].由于苹果严格控制程序后台挂起时间,消息不能被及时的存入到客户端本地数据库中;当客户端接收到APNS的推送消息后,用户点击通知栏消息重新激活挂起的程序,进入到应用程序中查看消息详情,此时会重新向服务器请求APNS推送的消息,存入客户端本地数据库,显示在聊天界面中.之后的消息操作流程与程序在前台运行时一致.APNS的机制如图8所示.

图8 苹果远程推送机制Fig.8 Apple remote push mechanism

4 系统测试

系统功能性测试主要是对平台的各个功能点进行验证,在平台正式上线之前尽早发现平台中可能存在地问题.测试方法基本是通过设计一些合适的测试用例,验证平台的各项功能是否能按照最初的平台设计正常运行.

4.1 测试环境

客户端主要是运行在iPhone手机上,需要适配iPhone各个屏幕尺寸以及兼容市面上流行的多个iOS系统版本,根据测试地不同目的选择对应地测试环境:

①测试手机:iPhone SE,iPhone 6/6Plus,iPhone 7/7Plus,iPhone 8/8Plus,iPhone X 等机型.

②系统版本:iOS 9,iOS 10,iOS 11,iOS 11.2 等版本.

③网络模式:3G,4G,WIFI.

4.2 测试内容

根据“乐助”的功能设计,“乐助”APP为社区居民提供了发布闲置资源和资源需求,联结资源供需双方地的功能.当小区居民注册成为“乐助”的会员,资源拥有者就可以发布闲置资源提供给资源需求方,整合居民闲置资源,降低居民获取信息的成本.本文主要选取注册登录模块、发布模块、订单模块的测试过程进行阐述.

1)注册登录模块

用户首次使用“乐助”APP时,点击注册按钮,跳转到注册页面,填写注册信息,点击提交按钮,将注册信息发送到服务器验证是否合法,服务器会给出相应的结果,客户端再展示给用户.成为会员之后,再次登录APP直接输入已注册的帐号和密码,将登录信息上传到服务器验证是否合法,服务给出相应结果,客户端再展示给用户.注册登录功能模块测试用例如表3所示.

表3 注册登录测试用例Table 3 login test cases

2)发布模块

发布模块,给用户提供图文和直播发布闲置资源和资源需求的功能,表4是用户发布闲置资源和资源需求功能模块的测试用例.

表4 发布测试用例Table 4 Release test cases

3)订单模块

订单模块是整个系统的核心模块,该模块为用户提供接单、取消订单、付款、确认收货、送回资源、评价等一系列功能.表5是订单功能模块的测试用例.

表5 订单测试用例Table 5 Order test cases

4.3 测试结果分析

根据以上测试,“乐助”APP所有功能模块能够正常运行,基本上能满足用户分享资源,寻找资源需求的功能.APP的界面能够适配iPhone SE,iPhone 6/6 Plus,iPhone 7/7Plus,iPhone 8/8Plus,iPhone X 的市面上流行的iPhone机型.APP在iOS 10、iOS 11和iOS 11.2系统上能够正常运行,在iOS 9系统上直播功能运行略微卡顿.在3G、4G、WIFI网络模式情况下,注册登录、订单功能、图文发布功能可以正常使用,直播发布功能只能在4G、WIFI网络模式下使用.

根据测试结果分析,“乐助”APP满足提出的业务需求,性能达到可以接受的范围,不存在明显的内存泄露问题,能够达到预期目标.

5 结束语

本文基于iOS平台的华阳社区资讯共享服务“乐助”APP连接了闲置资源供需双方,为双方直观明了地描述资源的供需细节而提供直播服务,而聊天服务则是为双方更进一步地沟通供需诉求提供更及时、更便捷的方式.

随着服务人数的增加和服务小区范围的扩大,对用户的真实身份鉴别难度随之加大,难以全面可靠地保证用户分享出去的财产安全.下一个版本的“乐助”着重对用户真实身份的鉴别、用户信誉的评价制度、用户间的相互监督方面进行完善;其次是根据用户的反馈意见增加或者调整部分功能,为用户提供更安全、更便捷的共享服务;最后,随着用户基数增大,基于平台上产生的数据量引入大数据统计方法及机器学习算法,分析用户偏好,预测用户需求,给用户提供个性化推荐服务,与用户建立密切关系.尽本团队的一切努力,为用户打造一个邻里互助、资源共享的面向社区的小众绿色生态圈.

[1]栗飞.分享经济国内外研究文献综述[J].时代金融,2017(9):13-17.

[2]黄骏.对我国共享经济发展的研究[J].经营管理者,2016(2):245.

[3]郑志来.共享经济的成因、内涵与商业模式研究[J].现代经济探讨,2016(3):32-36.

[4]黄昇.解读“社区共享经济”[J].城市开发,2016(6):68-69.

[5]李勇.iOS系统与应用安全分析方法研究[D].上海:上海交通大学,2015.

[6]石坤泉.基于MySQL数据库的数据隐私与安全策略研究[J].网络安全技术与应用,2017(1):79-81.

[7]杜丽娟.关系型数据库与NoSQL数据库的性能对比[J].智能计算机与应用,2017(3):132-134.

[8]章冲,杨东,等.基于iOS平台的移动智慧校园系统设计与实现[J].软件导刊,2016(2):75-77.

[9]王铮,赵颖.基于学习分析技术的藏汉双语数学题库的设计与实现[J].西南民族大学学报(自然科学版),2016(4):436-442.

[10]谭颖,胡俊平,等.基于iOS的“同学帮”移动应用软件设计与开发[J].软件导刊,2015(8):103-105.

[11]SCOTT KNASTER.Objective-C基础教程[M].周庆成,译.2版.北京:人民邮电出版社,2013:264-273.

[12]BARON SCHWARTZ.高性能MySQL[M].宁海元,译.3版.北京:电子工业出版社,2013:1-34.

[13]MATT GALLOWAY.EffectiveObjective-C2.0(编写高质量iOS与OSX代码的52个有效方法)[M].爱飞翔,译.北京:机械工业出版社,2014:46-67.

[14]涂耀辉.iOS即时通讯,从入门到“放弃”?[EB/OL].(2017-01-03)[2017-10-30].http://www.jianshu.com/p/2dbb360886a8.

[15]陈思.iOS推送之远程推送[EB/OL].(2016-02-16)[2017-10-30].http://ios.jobbole.com/83952/.

猜你喜欢

闲置客户端消息
数字化赋能闲置宅基地和闲置农房盘活改革
不做闲置主妇
一张图看5G消息
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
张驰
养老床位欠缺与闲置并存
消息