程序员人生 网站导航

iOS版本PM2.5空气质量监控仪

栏目:综合技术时间:2015-03-27 08:41:42

前言

鉴于柴静版《天穹之下》的火爆,也许更多的人会关心环境,空气质量等环保因素,参考某学院的Swift版本的PM2.5的获得,本人自己写个Objective-C版本的。

基本原理

服务器获得当前的空气质量数据,气象中心开放接口, 亚洲空气质量实时监控, 参照人家的教程使用亚洲空气质量监控。
本地解析数据,获得PM2.5数值,进行显示。

具体实现

NSNumber *str; -(void) loadData{ self.msgText.text = @"loading...."; NSURL *url = [NSURL URLWithString:@"http://aqicn.org/publishingdata/json"]; NSString *post=@"postData"; NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; [request setHTTPBody:postData]; [request setTimeoutInterval:10.0]; //GCD实现异步接口通讯与UI更新的同步 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSOperationQueue *queue = [[NSOperationQueue alloc]init]; [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){ if (error) { NSLog(@"Httperror:%@%d", error.localizedDescription,error.code); }else{ NSInteger responseCode = [(NSHTTPURLResponse *)response statusCode]; NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"HttpResponseCode:%d", responseCode); NSLog(@"HttpResponseBody %@",responseString); NSData *resData = [[NSData alloc] initWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding]]; NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:resData options:NSJSONReadingMutableLeaves error:nil]; NSLog(@"resultDic=%@", resultDic); arr = [[resultDic valueForKey:@"pollutants"] valueForKey:@"value"]; str = [[arr objectAtIndex:0] objectAtIndex:0]; NSLog(@"PM2.5=%@", [[arr objectAtIndex:0] objectAtIndex:0]); } }]; dispatch_async(dispatch_get_main_queue(),^{ self.msgText.text = str.stringValue; }); }); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self loadData]; // start reloadData } - (IBAction)reloadData:(id)sender { NSLog(@"Button Clicked"); [self loadData]; NSLog(@"Button Clicked"); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }

详情请参考以下链接:
源码地址

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐