導(dǎo)入框架CoreLocation.framework
其實(shí)在xcode6以后可以不用導(dǎo)入在info中設(shè)置定位權(quán)限
Privacy - Location Always Usage Description 一直開啟定位
Privacy - Location When In Use Usage Description 需要時(shí)開啟定位
在info設(shè)置還不夠蛀蜜,在代碼中還要用代碼來實(shí)現(xiàn)請(qǐng)求權(quán)限的功能
// 請(qǐng)求定位的權(quán)限
[self.locationM requestWhenInUseAuthorization];
- 創(chuàng)建位置管理者
/**
* 位置管理者
*/
@property (nonatomic, strong) CLLocationManager *locationM;
#pragma mark - 懶加載
- (CLLocationManager *)locationM
{
if (!_locationM) {
// 創(chuàng)建位置管理者
_locationM = [[CLLocationManager alloc] init];
// 設(shè)置代理
_locationM.delegate = self;
// 設(shè)置精確度
_locationM.distanceFilter = 1.0;
_locationM.desiredAccuracy = kCLLocationAccuracyBest;
}
return _locationM;
}
- 開啟定位、監(jiān)聽代理方法
/**
* 定位
*/
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 請(qǐng)求定位的權(quán)限
/**-------ios8.0+定位適配---------- */
if(isIOS(8.0))
{
// 請(qǐng)求前臺(tái)定位授權(quán)
// 默認(rèn)情況下, 只能在前臺(tái)獲取用戶位置
// 如果想要獲取后臺(tái)位置, 需要勾選后臺(tái)模式 location updates , 但是會(huì)出現(xiàn)藍(lán)條
[_locationM requestWhenInUseAuthorization];
// 如果在iOS9.0+想要在前臺(tái)授權(quán)模式下, 在后臺(tái)獲取用戶位置, 我們需要額外的設(shè)置以下屬性為YES
if (isIOS(9.0)) {
_locationM.allowsBackgroundLocationUpdates = YES;
}
// 請(qǐng)求前后臺(tái)定位授權(quán)
// 默認(rèn)在前后臺(tái)都可以獲取用戶位置信息, 無論是否勾選后臺(tái)模式locaiton updates, 而且不會(huì)出現(xiàn)藍(lán)條
// 如果當(dāng)前的授權(quán)狀態(tài)!=用戶為選擇狀態(tài), 那么這個(gè)方法不會(huì)有效
// [_locationM requestAlwaysAuthorization];
}
// 開始定位
[self.locationM startUpdatingLocation];
}
#pragma mark - CLLocationManagerDelegate
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"定位到了");
CLLocation *loca = locations.lastObject;
NSLog(@"%f, %f", loca.coordinate.longitude, loca.coordinate.latitude);
}