一、簡介 iOS9.0如果當前處於前臺授權狀態,預設是不可以後臺獲取用戶位置。 如果在前臺授權下,讓其能獲取到後臺定位,該怎麼辦 可以設置以下屬性為YES,就可以繼續獲取後臺位置,但是會出現藍條 使用註意:必須設置對應的後臺模式,勾選後臺模式:location updates @property(a ...
一、簡介
- iOS9.0如果當前處於前臺授權狀態,預設是不可以後臺獲取用戶位置。
- 如果在前臺授權下,讓其能獲取到後臺定位,該怎麼辦
- 可以設置以下屬性為YES,就可以繼續獲取後臺位置,但是會出現藍條
- 使用註意:必須設置對應的後臺模式,勾選後臺模式:location updates
@property(assign,nonatomic) BOOL allowsBackgroundLocationUpdates
- 如果在前臺授權下,讓其能獲取到後臺定位,該怎麼辦
-
註意:iOS9.0 可以單次請求用戶位置
- (void)requestLocation // 成功調用,locations位置數組,元素按照時間排序 -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations // 失敗調用 -(void)locationManager:(nonnull CLLocationManager *)manager didFailWithError:(nonnull NSError *)error
- requestLocation 作用:
- 按照定位精確度從低到高進行排序,逐個進行定位。如果獲取到的位置不是精確度最高的那個,也會在定位超時後,通過代理告訴外界(必須實現代理的-locationManager:didFailWithError:方法)
不能與startUpdatingLocation方法同時使用
- requestLocation 作用:
二、實現步驟
1、 前臺定位
- 1.導入CoreLocation框架和對應的主頭文件
#import <CoreLocation/CoreLocation.h>
- 創建CLLcationManager對象,並設置代理 請求前臺定位授權,並配置KEY
配置KEY .png_locationM = [[CLLocationManager alloc] init]; _locationM.delegate = self; if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { [_locationM requestWhenInUseAuthorization]; }
- 3.調用CLLcationManager對象的startUpdatingLocation方法進行更新用戶位置
[_locationM startUpdatingLocation];
- 4.實現代理方法,接收位置參數
-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations
2、後臺定位
-
方案一:在APP處於前臺定位授權場景下,勾選後臺運行模式update locations (如下圖) 並且,調用以下方法,設置允許後臺定位
勾選後臺模式.pngif ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) { _locationM.allowsBackgroundLocationUpdates = YES; }
註意:如果APP處於後臺,則會出現藍條
-
方案二:請求前後臺定位授權,並配置KEY
[_locationM requestAlwaysAuthorization];
原文鏈接:http://www.jianshu.com/p/a9a94cbcb775
著作權歸作者所有,轉載請聯繫作者獲得授權,並標註“簡書作者”。