iOS 10获取定位,根据位置获取天气
有时候我们在实现类似于日记本,天气预报等效果的时候,总是免不了获取用户手机当前的地理位置,根据位置进行网络请求获取天气预报,然后呈现给用户。iOS 10里面对用户隐私进行了更深入的保护,下面我们来看看iOS系统下的定位与天气。
配置相关设置,导入AFNetWorking第三方库
先在info.plist里面加入Privacy - Location Always Usage Description以及Privacy - Location When In Use Usage Description字段以获取用户手机定位权限。用cocoaPods或者手动导入AFNetWoking框架。
配置三方网络请求类
写一个NetRequest类,继承自NSObject
NetRequest.h
#import <Foundation/Foundation.h>
@interface NetRequest : NSObject
//get
+ (void)GET:(NSString *)url parameters:(NSDictionary *)parameters sucess:(void (^)(id responseObject))sucess failure:(void(^)(NSError *error))failure;
//post
+ (void)POST:(NSString *)url parameters:(NSDictionary *)parameters sucess:(void (^)(id responseObject))sucess failure:(void(^)(NSError *error))failure;
@end
NetRequest.m
#import "NetRequest.h"
#import "AFNetworking.h"
@implementation NetRequest
+ (void)GET:(NSString *)url parameters:(NSDictionary *)parameters sucess:(void (^)(id))sucess failure:(void (^)(NSError *))failure{
//实例化网络请求管理类
AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
//配置请求超时时间
manger.requestSerializer.timeoutInterval = 8;
//配置MIME类型
manger.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html", nil];
[manger GET:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
sucess(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnul