一欣鳖、簡介
- iOS9.0如果當(dāng)前處于前臺授權(quán)狀態(tài),默認(rèn)是不可以后臺獲取用戶位置不傅。
- 如果在前臺授權(quán)下旅掂,讓其能獲取到后臺定位,該怎么辦
- 可以設(shè)置以下屬性為YES访娶,就可以繼續(xù)獲取后臺位置商虐,但是會出現(xiàn)藍(lán)條
- 使用注意:必須設(shè)置對應(yīng)的后臺模式,勾選后臺模式:location updates
- 如果在前臺授權(quán)下旅掂,讓其能獲取到后臺定位,該怎么辦
@property(assign,nonatomic) BOOL allowsBackgroundLocationUpdates
+ 注意:iOS9.0 可以單次請求用戶位置
```objc
- (void)requestLocation
// 成功調(diào)用崖疤,locations位置數(shù)組秘车,元素按照時間排序
-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations
// 失敗調(diào)用
-(void)locationManager:(nonnull CLLocationManager *)manager didFailWithError:(nonnull NSError *)error
- requestLocation 作用:
- 按照定位精確度從低到高進(jìn)行排序,逐個進(jìn)行定位劫哼。如果獲取到的位置不是精確度最高的那個叮趴,也會在定位超時后,通過代理告訴外界(必須實現(xiàn)代理的-locationManager:didFailWithError:方法)
不能與startUpdatingLocation方法同時使用
二权烧、實現(xiàn)步驟
1眯亦、 前臺定位
- 1.導(dǎo)入CoreLocation框架和對應(yīng)的主頭文件
#import <CoreLocation/CoreLocation.h>
-
創(chuàng)建CLLcationManager對象,并設(shè)置代理 請求前臺定位授權(quán),并配置KEY
配置KEY .png
_locationM = [[CLLocationManager alloc] init];
_locationM.delegate = self;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0)
{
[_locationM requestWhenInUseAuthorization];
}
- 3.調(diào)用CLLcationManager對象的startUpdatingLocation方法進(jìn)行更新用戶位置
[_locationM startUpdatingLocation];
- 4.實現(xiàn)代理方法,接收位置參數(shù)
-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations
2、后臺定位
-
方案一:在APP處于前臺定位授權(quán)場景下,勾選后臺運(yùn)行模式update locations (如下圖) 并且,調(diào)用以下方法,設(shè)置允許后臺定位
勾選后臺模式.png
if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
_locationM.allowsBackgroundLocationUpdates = YES;
}
注意:如果APP處于后臺,則會出現(xiàn)藍(lán)條
- 方案二:請求前后臺定位授權(quán),并配置KEY
[_locationM requestAlwaysAuthorization];