1.选中target-->Gapability,打开Background Modes模式,并勾选Location updates
设置
2.代码如下:
ViewController.h
<pre>#import <UIKit/UIKit.h>
import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController<CLLocationManagerDelegate>
//定位管理对象
@property(nonatomic,strong)CLLocationManager *manager;
@end</pre>
ViewController.m
<pre>#import "ViewController.h"
@interface ViewController ()
{
CLGeocoder *_coder;
//存储上一次的位置
}
@end
@implementation ViewController
- (void)viewDidLoad 
 {
 [super viewDidLoad];
 self.view.backgroundColor=[UIColor whiteColor];
 //1.创建定位管理对象
 _manager=[[CLLocationManager alloc]init];
 _coder=[[CLGeocoder alloc]init];
 //2.设置属性 distanceFilter、desiredAccuracy
 _manager.distanceFilter=kCLDistanceFilterNone;//实时更新定位位置
 _manager.desiredAccuracy=kCLLocationAccuracyBest;//定位精确度- if([_manager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
 {
 [_manager requestAlwaysAuthorization];
 }
 //该模式是抵抗程序在后台被杀,申明不能够被暂停
 _manager.pausesLocationUpdatesAutomatically=NO;
 //3.设置代理
 _manager.delegate=self;
 //4.开始定位
 [_manager startUpdatingLocation];
 //5.获取朝向
 [_manager startUpdatingHeading];
}
pragma mark-CLLocationManager代理方法
//定位失败时调用的方法
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"%@",error);
}
//定位成功调用的的方法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
if(locations.count>0)
{
//        获取位置信息
CLLocation *loc=[locations lastObject];
//        获取经纬度的结构体
CLLocationCoordinate2D coor=loc.coordinate;
    CLLocation *location=[[CLLocation alloc]initWithLatitude:coor.latitude longitude:coor.longitude];
    
    [_coder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {        CLPlacemark *pmark=[placemarks firstObject];        NSLog(@"%@",pmark.addressDictionary);        NSString *city=pmark.addressDictionary[@"City"];        if([city hasSuffix:@"市辖区"])
            city=[city substringToIndex:city.length-3];        if([city hasSuffix:@"市"])
            city=[city substringToIndex:city.length-1];        NSLog(@"%@",city);
    }];
}}
@end</pre>
Appdelegate.m
<pre>#import "AppDelegate.h"
import <CoreLocation/CoreLocation.h>
import "ViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
 self.window.rootViewController=[ViewController new];
 return YES;
 }
- (void)applicationDidEnterBackground:(UIApplication )application { 
 if([CLLocationManager significantLocationChangeMonitoringAvailable])
 {
 ViewControllervc=(ViewController *)self.window.rootViewController;
 [vc.manager stopUpdatingLocation];
 [vc.manager startMonitoringSignificantLocationChanges];
 }
 else
 {
 NSLog(@"significant Location Change not Available");
 }
 }
- (void)applicationDidBecomeActive:(UIApplication )application { 
 if([CLLocationManager significantLocationChangeMonitoringAvailable])
 {
 ViewControllervc=(ViewController *)self.window.rootViewController;
 [vc.manager stopMonitoringSignificantLocationChanges];
 [vc.manager startUpdatingLocation];
 }
 else
 {
 NSLog(@"significant Location Change not Available");
 }
 }
@end</pre>
作者:CGPointZero
链接:https://www.jianshu.com/p/16f3eef4d4ff
共同学习,写下你的评论
评论加载中...
作者其他优质文章
 
                 
            
 
			 
					 
					