概述
IngeoSDK對(duì)CoreLocation進(jìn)行了擴(kuò)展和封裝,為iOS(Swift以及Objective-C)提供了高效的位置管理。通過(guò)使用用戶的運(yùn)動(dòng)狀態(tài)、行為、速度和所在位置祝辣,運(yùn)用特有的算法,動(dòng)態(tài)持續(xù)調(diào)整CoreLocation的軌跡配置參數(shù)切油。從而實(shí)現(xiàn)實(shí)時(shí)優(yōu)化精度以及最小電量消耗的效果较幌。
不管App或者服務(wù)器處于前端后端甚至沒(méi)有網(wǎng)絡(luò)的狀態(tài)下都能接收到最近的位置信息。當(dāng)然我們已經(jīng)幫你過(guò)濾掉了差別很大的位置樣本白翻。電池消耗每小時(shí)僅需2%左右乍炉,支持iOS7.0以上版本的iPhone,iPodTouch滤馍,iPad岛琼。
http://ingeo.io/sdk/ idk詳情
下載文件或者克隆這個(gè)倉(cāng)庫(kù)
解壓用Xcode打開(kāi)Samples/Swift-Sample01中的工程文件
在ViewController.swift的初始化方法中編輯輸入你的API key
swift:
<pre>IGLocationManager.initWithDelegate(self, secretAPIKey: "APIKEYGOESHERE")</pre>
沒(méi)有API key?點(diǎn)擊這里http://admin.ingeo.io/signup.php免費(fèi)注冊(cè)獲得
現(xiàn)在只要在iOS模擬器或者真機(jī)運(yùn)行該項(xiàng)目巢株,走在舊金山的街頭(使用了一個(gè)用于記錄的GPX文件)槐瑞,并觀察debug控制臺(tái)的輸出
使用CocoaPods安裝
在Pod file中添加 pod 'IngeoSDK'
開(kāi)啟定位服務(wù)
1.Xcode中,target settings -> ‘Capabilities’ -> ‘Background Modes’ 打開(kāi) ‘Location updates’
2.在app的info.plist中添加一個(gè)String格式的key—NSLocationAlwaysUsageDescription(留空值)
使用
引入 import IngeoSDK
設(shè)置代理
<pre>class ViewController: UIViewController, IGLocationManagerDelegate {</pre>
初始化
<pre>IGLocationManager.initWithDelegate(self, secretAPIKey: "APIKEYGOESHERE")</pre>
開(kāi)啟定位監(jiān)視器
<pre>IGLocationManager.startUpdatingLocation()</pre>
實(shí)現(xiàn)IGLocationManagerDelegate代理方法
swift
<pre>func igLocationManager(manager: IGLocationManager!, didUpdateLocation igLocation: IGLocation!) {
print("didUpdateLocation: (igLocation.description)")
}
func igLocationManager(manager: IGLocationManager!, didDetectMotionState motionState: IGMotionState) {
print("didDetectMotionState: (IGLocation.stringForMotionState(motionState))")
}</pre>
Objective-C
<pre>- (void)igLocationManager:(IGLocationManager *)manager didUpdateLocation:(IGLocation *)igLocation {
NSLog(@"didUpdateLocation: %@", [igLocation description]);
}
- (void)igLocationManager:(IGLocationManager *)manager didDetectMotionState:(IGMotionState)motionState {
NSLog(@"didDetectMotionState: %@",[IGLocation stringForMotionState:motionState]);
}</pre>