Geode 0.1.3

Geode 0.1.3

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最后发布2016年9月
SPM支持 SPM

John Watson 维护。



Geode 0.1.3

Geode

位置管理变得简单。

使用方法

一次性位置访问

iOS 9 引入了请求一次性递送用户当前位置的能力。此方法不会让位置服务长时间运行,超出了获取位置固定所必需的时间。一个常见的用例是将位置更新与某个动作关联,以便用户在需要时刷新他们的位置。

import Geode

let locator = Geode.GeoLocator(.OneShot)

@IBAction func updateLocationAction() {
    locator.requestLocationUpdate { location in
        debugPrint("Current location: \(location)")
    }
}

持续位置访问

持续位置访问(iOS 9 之前可用的唯一方法)会在用户的位置发生变化时向您的应用程序提供位置更新。这种方法的代价是增加了电池使用量,但会提供最新的位置数据。

例如,您可能将位置监控与视图控制器的生命周期相关联

import Geode

let locator = Geode.GeoLocator(.Continuous)

override func viewDidLoad() {
    super.viewDidLoad()

    locator.startMonitoring { location in
        debugPrint("Current location: \(location)")
    }
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated: animated)

    locator.stopMonitoring()
}

日志记录

调试位置服务最有效的方法之一是从您的 CLLocationManagerDelegate 进行日志记录。Geode 的实现使用了大量的日志语句,所有这些语句都委托给默认为 nillogHandler 回调。这允许与现有的日志框架(例如 CocoaLumberjack)轻松集成。

public typealias LogHandler = (message: () -> String, level: LogLevel, file: StaticString, line: UInt) -> Void

参数《message《作为一个闭包传递,这使我们有可能避免处理任何不必要字符串,如果日志级别不是足够高。一个简单的日志实现可能看起来像以下内容

locator.logHandler = { message, level, file, line in
    debugPrint("[GEODE] \(String(level).uppercaseString) \(file) L\(line): \(message())")
}

维护者

许可

Geode 在 MIT 许可下发布。有关详情,请参阅 LICENSE