基于IOS开发的手机旅游推广客户端

点击数:733 | 发布时间:2025-07-24 | 来源:www.haaehr.com

    中图分类号:TN929 文献标识码:A 文章编号:
    1009-3044(2017)06-0223-04

    年代在进步,科技在进步,手机有哪些用途已经不止是打电话,发短信,其担任的更要紧的角色是大家信息的提供者,所以手机应用行业渐渐成为热点行业,而今移动应用的开发产业充斥着大家的生活,目前主要的几大移动平台有如下几个:iOS平台、Android平台、mobile web(WAP/XHTML/CSS/Javascript)。其中Android(Android)具备开放性,多任务,画面流畅,硬件设施性能优良等优点,占据了智能机市场的绝大多数。但Android商品的兼容性较差,有的商品华而不实,客户体验较差。就现在而言,其他平台的市场占有率正在呈降低趋势,而近iOS商品的市场占有率正在上升。

    伴随苹果商品的不断更新,相应的各类应用的开发也愈加热门。就现在而言,iOS在智能手机的应用软件中的下载量占了33%,另外,iOS平板电脑应用的下载量占据75%,所以,iOS的有关应用软件有着庞大的消费群体。因为iOS的应用够创意,够实用,用户群体庞大,iOS软件进步形势乐观,导致很多开发者投身其中。伴随大家生活品质的提升,生活步伐的加快,愈加重视诗句感官的成效。基于这种近况,开发一款旅游类的手机应用,为用户提供详细的出行信息,旅游信息的介绍,满足用户不出门就能右侧全世界的需要是十分符合市场规律的。整个项目用基于Foundation框架下得Objective-C?Z言撰写的,用基于UIKit框架下的UI设计搭建的用户界面来与用户交流,通过用每一个类之间的接口文件关联多个类,用MapKit框架和CoreLocation框架下来达成地图定位功能,用讯飞语音达成了语音录入功能,用当地数据库SQLite存储用户信息与珍藏的景点信息,此外还用Quartz框架,SystemConfiguration框架,CoreFoundation框架等辅助完本钱项目。

    本应用程序的设计目的是开发一款具备界面友好的,重视安全性的,客户体验好的,易于扩展和维护的手机软件。

    1 界面设计

    1)推荐界面。分为火热推荐与趣季推荐两个部分。该界面整体是一个表视图,首页默认显示北京热点地址推荐,用户点击其他城市跳转到相应界面。界面要做到功能齐全,介绍不冗余并且简单易于用户操作。

    2)目的地界面。该界面是总体介绍世界各地的界面,分为国内城市、热点城市、港澳台、欧洲国家、亚洲国家与美洲和大洋洲这几大模块,点击每一个模块时候跳转到相应的详细情况介绍界面。

    3)主题游界面。该界面整体是一个表视图,展示不一样的游玩的主题,点击跳转到详细界面。

    4)景点界面。首页默认显示三亚的有关景点列表,在此界面可以直接搜索想要去的景点,也可以选择想要去的城市并展示相应城市的景点列表。

    5)我的界面。在此界面显示该项目的一些信息,可以在此界面登录注册、查询珍藏信息,清除缓存等。

    6)登录界面。登录时需要填写用户名和密码,与数据库中存储的用户信息进行匹配,保证了用户安全。

    2 系统模块

    整个系统共分为5个打的模块:推荐模块、目的地模块、主题游模块、景点模块、我的模块。每一个模块达成的功能介绍如下:

    1) 推荐模块。本模块要达成的功能是为用推荐几个热点城市的旅游地址与户外的旅游信息,首页默认显示北京热点地址推荐,用户点击其他城市跳转到相应界面。在显示户外信息的界面用户可以参考我们的意愿选择想要查询的城市的户外信息。

    2) 目的地模块。界面中将世界分为几大模块,每个模块中包含相应的城市,点击相应的城市之后机会跳转到该城市的景点列表界面,在此界面有地图定位功能,可以查询该景点的周围信息。

    3) 主题游模块。该模块为用户提供旅游的主题,每一个主题中包括相应的景点信息。

    4) 景点模块。该模块是总体介绍世界各地的景点,可以参考我们的意愿进行搜索,搜索时有语音辨别功能,说出想要查看的景点即可,便捷用户用。

    5) 我的界面。在此界面有登录注册功能,查询珍藏信息功能,清除缓存等功能。

    通过对项目进行功能需要剖析,可以初步确定该项目所需的基本数据。各模块的具体数据需要如下:

    1)推荐模块。该模块的数据持久化用相对应的plist文件达成,此文件中共有8个字典,每个字典存储一个热点城市的数据,其中url这一个键对应的值就是大家进行互联网请求是的链接,同时也是该模块的数据来源。

    2)目的地模块。该模块的数据持久化用DestinationCityList.plist文件达成,此文件中共有8个字典,每个字典存储一个小模块的数据,其中url这一个键对应的值就是大家进行互联网请求时的链接,同时也是该模块的数据来源,由此得到相应模块的城市列表。在城市列表中点击得到的详情介绍页数数据源自一个公共链接,在此链接中有关数据的字段是大家点击的地址的名字,由此得到相对应的景点信息。 3)主题游模块。

    4)景点模块。该模块首页默认显示三亚的景点信息,每一个城市都有自己对应的城市ID号,分析依据此ID得到的不同链接从而得到相应的数据,点击城市列表时依据一个城市列表的链接进行数据请求和数据分析得到城市列表的Model类,然后将它中的id属性通过代理回调回传给上个链接的城市id,从而获得不同城市的景点信息。

    5)我的模块。用SQLite当地数据库存储注册的用户信息,与用户珍藏的景点和目的地信息,用户查询时从数据库中调取相应数据。

    应用程序致力于为用户提供详细的旅游信息,便捷用户出行,围绕这一中心任务,该应用程序用户分为两种:注册用户和游客。

    已经注册的用户在用该应用程序时可以先进行登录操作,然后可以珍藏目的地和景点信息,并对其进行修改。注册并已经登录的用户用例图如图1所示:

    游客指的是还没注册的用户,这类用户只能对本应用程序中的信息进行浏览不能进行珍藏操作,可以进行注册登录操作。游客用户用例图如图2所示:

    3 系统重点技术

    3.1 Objective-C语言

    Objective-C,一般写作ObjC和Obj-C,是扩充C的面向对象编程语言。它主要用于Mac OS X和GNUstep这两个用OpenStep标准的系统。Objective-c在运行时可以允许依据字符串名字来访问办法和类,还可以动态链接和添加类[1]。

    3.2 Foundation框架和UIKit框架

    Objective-C中的Foundation框架与Java中的SDK类库相似,是框架的基础,与界面无关,它提供了很多基本的各种基本数据种类、集合、操作系统服务的对象的类,包括了很多的API。

    UIKit框架提供一系列的class来打造和管理iOS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏的接口等,是基础的UI类库,与Foundation框架是Cocoa框架中的两个比较要紧的框架[2]。

    3.3 SQLite数据库

    SQLite是一款无数据种类的轻量级的嵌入式数据库,拥有了基本数据库特质的数据库文件,与其他引擎响应式数据库不一样的是SQLite是程序驱动。SQLite包括在一个相对小的C库中,SQLite引擎不是个程序与之通信额独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用[3]。

    该项目共有5个模块:推荐模块、目的地模块、主题游模块、景点模块和我的模块。项目总体结构图如下图3所示:

    3.4 系统总体步骤图

    当用户作为游客即未注册用户用本应用程序时,可以对APP的每个模块进行浏览,当要进行珍藏操作时,就会跳到登录或注册界面,完成此项操作后方可进行珍藏操作。详细步骤图如下图4所示:

    3.5 APP的结构设计

    3.6 数据请求代码

    本应用程序的数据均源于互联网数据,是通过数据链接直接从网上获得的,并不是是提前在数据库中写好的固定的数据。互联网请求用GET方法进行请求,然后用系统提供的JSON方法进行数据分析,主要代码如下:

    - (void)setData{

    if ([_app internetReachableOrNot]) {

    if (self.url == nil) {

    self.url = @"http://app.xialv.com/index2.php?a=sList2&page=1&city_id=1001&type=2";

    }

    NSURL *urlSrting = [NSURL URLWithString:self.url];

    self.allDataArray = [NSMutableArray new];

    for (NSDictionary *pct in modelDict[@"result"]) {

    BJModel *bjModel = [BJModel new];

    [bjModel setValuesForKeysWithDictionary:pct];

    [self.allDataArray addObject:bjModel];

    pspatch_async(pspatch_get_main_queue(), ^{

    [self.tableView.header endRefreshing];

    [self.inpcator sTOPAnimating];

    [self.tableView reloadData];

    });

    }

    }];

    [dataTask resume];

    }else{

    [self.tableView.header endRefreshing];

    [self alertController];

    }

    }

    第一判?嗤?络是不是连接,只有在有网的状况下才会进行数据请求,self.url就是用于数据请求的连接,进行数据请求的步骤是:创建URL对象――>依据URL创建请求对象――>获得目前会话(互联网请求的主体内容)――>创建数据请求任务――>启动任务。在数据请求任务中有一个block块,在这里面进行数据分析操作。

    应该注意的是block块语法在实行数据请求操作的时候是异步操作(不影响主线程的实行),也就是说程序在实行到block块的时候会同时实行block内部和外部的代码,假如此时在外部要用block内部请求的数据,数据可能为空,解决这一问题的办法就是在完成数据分析操作之后用pspatch_async(pspatch_get_main_queue(), ^{})这一办法使程序回到主线程刷新数据,如此就能正常运行了。 3.7 推荐功能

    推荐用的是友盟第三方推荐,可以将本应用程序的内容推荐到新浪微博、豆瓣、每人等交流平台。第一用CocoPods导入友盟SDK,然后添加相应的依靠库,在需要推荐的类中导入头文件#import 与#import ,推荐达成的主要代码如下:

    NSString *shareString = [NSString stringWithFormat:@"%@ 错落的时光里,纷繁的日常,#时遗#带你体验简单的美好!", self.detailsModel.title, self.detailsModel.viceTitle, self.detailsModel.shareUrl];

    [[UMSocialData defaultData].urlResource setResourceType:UMSocialUrlResourceTypeImage url:self.detailsModel.iconUrl];

    [UMSocialSnsService presentSnsIconSheetView:self appKey:@"5732cc6b67e58ecfef0010be" shareText:shareString shareImage:nil shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina,UMShareToRenren, UMShareToTencent, UMShareToDouban, nil] delegate:nil];

    }

    -(void)pdFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response

    {

    if(response.responseCode == UMSResponseCodeSuccess)

    {

    NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);

    }else{

    NSLog(@"%d",response.responseCode);

    }

    提前设置好需要推荐的内容,然后UMSociaSnsService调用presentSnsIconSheetView:appKey:shareText:shareImage:shareToSnsNames:办法将需要推荐的文字、图片推荐到每个平台。

    3.8 语音功能

    本应用程序提供语音辨别功能,需要用CocoPods导入iflyMSC框架,然后在Appdelegate类中注册初始化语音通讯,在需要用语音辨别的类中导入头文件#import "iflyMSC/IFlyRecognizerViewDelegate.h"、#import "iflyMSC/IFlyRecognizerView.h"与#import "iflyMSC/IFlySpeechConstant.h",然后需要遵循IFlyRecognizerViewDelegate协议,点击语音按钮之后会调用按钮的触发办法- (void)voiceAction:(UIButton *)button,开始语音辨别,然后调用相应的协议办法-(void)onResult:(NSArray *)resultArray isLast:(BOOL)isLast;获得所说的话并将它赋值给搜索文本框,主要达成代码如下:

    - (void)voiceAction:(UIButton *)button{

    [self.iflyRecognizerView start];

    }

    -(void)onResult:(NSArray *)resultArray isLast:(BOOL)isLast{

    // 获得说话结果中的内容

    NSDictionary *pct = [resultArray firstObject];

    NSLog(@"%@",resultArray);

    for (NSString *key in pct) {

    [self.resultString appendFormat:@"%@",key];

    }

    self.searchBar.text = @"";

    self.searchBar.text = self.resultString;

    }

    本??用程序主要达成了以下基本功能:

    1)本应用程序使用MVC模式设计,非常不错地达成了数据设计和界面设计的离别。

    2)用UIKit框架下的系统类达成了此应用程序的界面设计。分为游客模式和登录用户模式两种。

    3)系统推荐功能,达成了用户浏览趣季模块时可以将自己有兴趣的内容推荐到微博、每人等交流平台的操作。

    4)地图定位功能,达成了用户浏览目的地时准确定位景点所在地的操作。

    5)珍藏功能,达成了已经登录的用户在浏览目的地和景点模块时可以将自己有兴趣或者想去的地方珍藏到当地数据库的操作。

    6)个人基本资料管理功能,游客可以注册新用户,系统会将用户信息存储在服务器,用户登录的时候会将输入的信息与服务器的数据进行匹配。

    在应用程序设计过程中,MVC模式的优势在很多方面彰显出来,促进了应用程序的开发的进度与效率。

  • THE END

    声明:本站部分内容均来自互联网,如不慎侵害的您的权益,请告知,我们将尽快删除。

专业院校

返回顶部

Copyright©2018-2024 中国考试人事网(https://www.bzgdwl.com/)
All Rights Reserverd ICP备18037099号-1

  • 中国考试人事网微博

  • 中国考试人事网

首页

财经

建筑

医疗