概述
IngeoSDK对CoreLocation进行了扩展和封装,为iOS(Swift以及Objective-C)提供了高效的位置管理。通过使用用户的运动状态、行为、速度和所在位置,运用特有的算法,动态持续调整CoreLocation的轨迹配置参数。从而实现实时优化精度以及最小电量消耗的效果。
不管App或者服务器处于前端后端甚至没有网络的状态下都能接收到最近的位置信息。当然我们已经帮你过滤掉了差别很大的位置样本。电池消耗每小时仅需2%左右,支持iOS7.0以上版本的iPhone,iPodTouch,iPad。
http://ingeo.io/sdk/ idk详情
下载文件或者克隆这个仓库
解压用Xcode打开Samples/Swift-Sample01中的工程文件
在ViewController.swift的初始化方法中编辑输入你的API key
swift:
<pre>IGLocationManager.initWithDelegate(self, secretAPIKey: "APIKEYGOESHERE")</pre>
没有API key?点击这里http://admin.ingeo.io/signup.php免费注册获得
现在只要在iOS模拟器或者真机运行该项目,走在旧金山的街头(使用了一个用于记录的GPX文件),并观察debug控制台的输出
使用CocoaPods安装
在Pod file中添加 pod 'IngeoSDK'
开启定位服务
1.Xcode中,target settings -> ‘Capabilities’ -> ‘Background Modes’ 打开 ‘Location updates’
2.在app的info.plist中添加一个String格式的key—NSLocationAlwaysUsageDescription(留空值)
使用
引入 import IngeoSDK
设置代理
<pre>class ViewController: UIViewController, IGLocationManagerDelegate {</pre>
初始化
<pre>IGLocationManager.initWithDelegate(self, secretAPIKey: "APIKEYGOESHERE")</pre>
开启定位监视器
<pre>IGLocationManager.startUpdatingLocation()</pre>
实现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>