經驗拾遺之定位功能

? 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很少,沒有多少研究的空間。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容