APP下载

基于iOS系统的天气App程序开发与应用

2018-01-05李清平孟祥芳宋国顺

软件工程 2017年11期

李清平+孟祥芳+宋国顺

摘 要:基于iOS系统,在进行需求分析、功能分析和系统总体结构分析的基础上,设计系统内容的组织结构。使用Objective-C编程语言在MacOS、Xcode和CocoaPods环境下开发天气App应用程序,主要功能模块包括主页信息、天气查询和分享三部分,重点分析了天气查询模块的实现方法,列举了关键代码。天气App程序通过对接和风天气预报API获取全国主要城市的氣象资料,用户在网络连通的情况下,可针对性地查询目标城市的天气动态变化信息,方便用户的出行和其他预防工作。同时通过分享功能,达到信息共享和好友互动的目的。

关键词:iOS系统;天气App;Objective-C编程语言;和风天气预报API

中图分类号:TP311.1 文献标识码:A

Abstract:Through the requirements analysis,the functional analysis and the system overall structure analysis,the paper designs the organization structure of the system content based on iOS.In the environment of MacOS,Xcode and CocoaPods,the weather APP program has been developed by using the Objective-C programming language.The three main function modules include the homepage,the weather information query and the weather information sharing.The implement method of the weather information query module has been analyzed emphatically with the critical code.The weather APP program acquires meteorological data of major cities in China through the connection to the HeWeather API.With Internet connection,users can specifically check the dynamic weather information of target cities,so as to make some preparation and prevention for travel.Meanwhile,the sharing function can be applied to achieve the purpose of information sharing and interaction among friends.

Keywords:iOS;weather App;Objective-C programming language;heweather API

1 引言(Introduction)

随着移动设备的性能不断提升,基于移动设备系统的程序开发也蔚然成风。目前主流的移动开发平台以Android和iOS为主。iOS操作系统因功能强大,能展示多点触摸、视频及众多内置传感器的界面而获得使用者青睐,用户量不断攀升,已经成为移动平台开发的风向标[1-3]。

移动4G将我们的生活、工作引入了更高层次的信息化时代,智能终端产品已经逐渐走进人们日常生活的各个方面。目前全世界数十亿人获取私人化、精确的气象信息是通过天气App程序实现的[4]。

基于iOS的天气App通过对接和风天气预报API来获取气象资料,覆盖国内2567个市、县的详细气象信息,对可能出现的大风、暴雨、冰雹等自然灾害提前预警,因此天气App可以最大限度地减少生命、财产的伤害和损失,为人民生活和生产提供优质气象服务,促进社会的稳定和发展[4,5]。

2 需求分析(Requirements analysis)

天气App程序的用户主要是对获取天气信息有需求的人群,具体特征如下:

对于普通用户来说,主要了解当日的天气情况,选择相应的穿衣搭配和出行安排,并且能将天气信息推送给朋友。对于相关行业人员来说,可根据未来天气情况提出对应的措施,力求最大化减小损失。因此天气预报的受众需要了解目前的天气情况和未来的天气变化等,对其他城市的天气状况也会加以关注,同时可以对默认城市进行更改,天气App的用户需求分析如图1所示。

3 功能分析(Functional analysis)

基于iOS系统的天气App程序,其主要功能是实现气象数据的实时获取和更新,并以用户喜爱的方式呈现出来。用户能根据自己的需求加以选择,获取相关信息。涉及的功能模块主要有实时天气、未来天气、城市搜索和默认设置等。

4 系统总体结构(System overall structure)

系统总体结构包括技术和组织两个方面。从技术角度看,系统设计必须有良好的运作机制、信息流程等;从组织角度出发,便捷、时尚的天气预报查询应该更有吸引人的魅力[6]。

4.1 系统模块协作关系

整个系统以菜单模块为核心,天气查询模块负责显示天气情况,分享模块负责分享文字和图片到新浪微博平台。三个模块互相协作,最终构建一个基于iOS的天气预报查询程序。

4.2 系统启动流程

系统将所有功能模块化,启动期间会顺序加载模块,并自动运行模块的初始化代码。初始化所有模块后再运行其他核心初始化代码,系统启动流程如图2所示。endprint

4.3 系统内容组织结构

天气App程序主要包括地点查询、天气查询和分享。不但可以让用户方便快捷地了解天气情况,还可以发微博,与亲朋好友共同分享周边的人、事、物和自己的心情和状态,系统的内容结构如图3所示。

5 功能模块(Function module)

根据需求分析和设计思想,天气App程序可以抽象为主页信息模块、天气查询模块和分享模块,采用iOS中页面布局导航控制器(UINavigationController)管理视图管理器(UIViewController)的方式,UINavigationController创建一个UIViewController“栈”,用户在场景间切换时,依次将UIViewController压入“栈”中,且当前场景的UIViewController位于栈顶,要返回上一层界面,UINavigationController将弹出栈顶的控制器,从而回到其一层界面的控制器[7,8]。

5.1 主页信息模块

主页的UI界面以静态数据显示,上半部分为左右两部分和底部。左边显现温度和风力状况,点击温度可以进入下一级界面;右边显示城市和日期,点击城市可以进入下一界面;底部三个按钮分别为分享、生活指数和更新数据。下半部使用UICollectionView显示四种天气预报,点击cell进入下一级界面,实现后的主页信息如图4所示。

(1)当日气象信息:包含当日详细的气象数据,如温度、风速、时间、天气状况等,同时具备温馨提示的功能。

(2)未来气候变化:简要列出未来若干段时间内的气候变化趋势。

(3)城市搜索功能:用户通过搜索引擎查询全国县级以上城市的天气情况。

(4)默认设置功能:用户可以根据需要设置默认显示的城市气象信息。

5.2 天气查询模块

天气查询模块是本系统的重点,需要实现地理位置查询、天气查询和折线图。该模块主要负责用Post方法向服务器发送请求并将获取到的Xml数据进行解析,将解析得到的数据加载到创建好的列表上。折線图利用iOS中比较复杂的画板,将获取的未来四天内的气温变化以折线形式显示在画板上,可以方便用户直观了解未来的天气状况。同时还采用比较常用的第三方库AFNetworking进行数据请求,请求到的JSON数据可以直接用AFNetworking返回的字典转换成模型,通过模型把信息显示在界面上。另外还用到了第三方库MBProgressHUD的加载齿轮效果。当获取并解析数据时,屏幕中间出现转动的齿轮,此时用户不能进行操作;当数据解析完毕并加载到界面后,齿轮停止转动,此时用户对系统进行操作。主要实现的代码如下:

@implementation CLNowCell

// 封装UItableView。数据模型预先给UITableViewCell赋值,在完成数据请求后找到合适的时机刷新UI,按照模型赋值并用表格显示数据

+ (instancetype)nowWithTabView:(UITableView*)tabView {

static NSString*identifier=@”nowCell”;

CLNowCell*nowCell=[tabView dequeueReusableCellWithIdentifier:identifier];

if (nowCell==nil) {

UINib*nib=[UINib nibWithNibName:@”CLNowCell” bundle:nil];

nowCell=[[nib instantiateWithOwner:nil options:nil] lastObject];

}

return nowCell;

}

- (void)setNow:(CLNow*)now {

_now=now;

self.dateLabel.text=[NSString stringWithFormat:@”时间:%@”,now.date];

self.tmpLabel.text=[NSString stringWithFormat:@”温度:%@℃”,now.tmp];

self.humLabel.tex=[NSString stringWithFormat:@湿度%@%%”,now.hum];

self.popLabel.text=[NSString stringWithFormat:@”降水概率%@%%”,now.pop];

self.presLabel.text=[NSString stringWithFormat:@”气压:%@”,now.pres];

self.dirLabel.text=[NSString stringWithFormat:@”风向(方向)%@”,now.wind.dir];

self.scLabel.text=[NSString stringWithFormat:@”风力:%@级”,now.wind.sc];

self.spdLabel.text=[NSString stringWithFormat:@”风速:%@km/h”,now.wind.spd];

self.degLabel.text=[NSString stringWithFormat:@”风向(角度)%@”,now.wind.deg];

}

@end

天气App程序需要先进行地理位置查询,然后再进行天气查询。当用户点击查询天气的按钮时会先进入到地理位置查询的界面。地理位置查询主要有两个界面,一个是先按省份查询,当用户选择好省份后点击cell会跳入到市、县级城市查询界面,如图5所示。endprint

当用户选好想要查询的城市后会进入到天气查询界面,包括当日天气情况、未来四天内的天气情况和生活指数等。当用户点击温度时会进入到“天气状况”界面,如图6所示。当点击中间的按钮将进入生活指数界面,如图7所示。

5.3 分享模块

分享模块是本系统吸引用户的一个亮点。考虑新浪微博平台的用户基数比较大,另外其接口都是开放的,除了少数高级接口需要权限外,大部分接口都是免费供开发者使用,因此本模块选用了新浪微博平台,用户在这里可以与更多的人分享自己的微博。

6 结论(Conclusion)

移动智能终端已深入到生活的方方面面,人们通过移动终端与外界发生各种联系,具体表现就是提供应用服务。基于iOS系统的天气App应用程序在进行需求分析和功能分析的基础上,提出了设计目标和功能模块划分,详细阐述了主页模块、天气查询模块和分享模块的实现方法及实际应用效果,同时对应用程序进行了集成测试和可行性测试。该应用程序目前已上架,可以通过苹果手机AppStore,下载“见闻JW”,点击“风和天气”进行浏览。当然,天气App应用程序还亟待完善,如增加“短信预报”“闹钟提醒”“新闻模块”等功能,将对用户提供更多的帮助,使他们的生活更加方便和愉悦。

参考文献(References)

[1] 吴宁.iOS APP开发安全框架设计与实现[D].杭州:浙江大学,2015.

[2] 秦雅麗.基于IOS《淘最上海》客户端的设计与实现[D].上海:复旦大学,2014.

[3] 韦璐娉.基于微信和APP客户端的图书馆社会化阅读服务模式研究[D].南京:南京大学,2014.

[4] 张燕宁.移动天气系统UI设计[J].电脑知识与技术,2016,12(2):

84-85.

[5] 王海南,邵国强,介龙梅.基于IOS平台塔防游戏的设计与实现[J].软件工程师,2014,17(6):32-33.

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

[7] 钱克苍.基于IOS平台的汽车安全驾驶系统[J].软件工程师,

2014,17(8):58-62.

[8] 何宇,林晓焕,郭靖.iOS平台上实时查询公交的设计与实现[J].微处理机,2014(3):60-62.

作者简介:

李清平(1969-),男,学士,副教授.研究领域:计算机网络技术.

孟祥芳(1978-),女,硕士,讲师.研究领域:高职教学管理.

宋国顺(1980-),男,硕士,讲师,网络工程师.研究领域:计算机应用技术.endprint