? iOS開發,定位功能是很多app的核心功能,也是出門在外的必用功能,現在來重新整理一下CoreLocation這個框架常用以及新增功能。
1.首先設置locationManager,都是簡單明了的:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = 10;
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation];
2.實現delegate,當有位置更新時自定義操作:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"%@", [locations lastObject]);
}
3.iOS8新增:
- requestWhenInUseAuthorization
- requestAlwaysAuthorization
這兩個方法用于請求定位服務授權,一個是使用期間授權,一個是永久授權。對于用戶來說是好事,當app不在使用,不希望獲取自己的定位,可以省電省流量,也可以保護用戶的隱私。還可以在plist設置當彈出請求時的文字信息。
- startMonitoringVisits
- stopMonitoringVisits
只是看這兩個方法真不知是表達什么,順藤摸瓜,看了delegate,找到了一個新增類CLVisit,官方文檔敘述是包含了用戶去過一些有趣地方的信息。應該是用戶如果去到一些經典或者著名的地方就會觸發,就會回調相關的信息,覺得很適合導航類app做廣告用。
CLFloor
這是一個新增類,只有一個屬性:level,顯示當前所在樓層。
3.iOS9新增:
- (void)requestLocation
對于一些不是以定位為核心的app來說,這是一個很好用的api,這個方法會馬上更新返回當前的定位信息,只會調用一次,省電省流量。
allowsBackgroundLocationUpdates
這是一個新增屬性,決定是否在后臺接收定位信息,如果設置為YES需要同時在plist設置UIBackgroundModes。這樣當app不在當前運行進入后臺后也會接收到定位信息。
綜合來看,以后蘋果會在室內導航上面下功夫,CLVisit和CLFloor就是為以后的實現做鋪墊,不過目前相關api很少,沒有多少研究的空間。