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
共同学习,写下你的评论
评论加载中...
作者其他优质文章