用于观察位置的 ReactiveSwift 包装器
我们的包装器会自动请求权限。它会通过检查您的应用程序的 Info.plist 来确定您的应用程序需要哪种类型的权限。
通过使用我们的包装器,您可以使用单个 CLLocationManager
实例,并且它会根据观察者的数量自动开始和停止更新位置,这样您的应用程序就不会无谓地耗尽设备电量。
示例用法
例如用法,您可以查看本存储库中包含的示例。
对于最简单的情况,您提供了 shared
实例
ReactiveLocation.shared.locationProducer().startWithValues { location in
print(location)
}
如果您需要为您的 CLLocationManager
获取更多不同的设置,您可以通过创建新的 ReactiveLocation
实例并将您想要的设置添加到提供的 locationManager
(但您需要确保该实例在您需要时保持活跃)来简单地创建额外的实例。
let reactiveLocation = ReactiveLocation()
reactiveLocation.locationManager.distanceFilter = 100 // do your custom setup
reactiveLocation.locationProducer().startWithValues {
print($0)
}
// store `reactiveLocation` instance somewhere
测试支持
ReactiveLocation
的所有功能都封装在 ReactiveLocationService
协议中,因此您应在项目中使用此协议作为依赖,这样您就可以注入任何您喜欢的测试实现。
安装
ReactiveLocation
可以通过Carthage获得,将其添加到Cartfile中效果很好。
github "AckeeCZ/ReactiveLocation"
如果您不熟悉Carthage,我们也支持Cocoapods。
pod "ReactiveLocation"
如果您不熟悉任何依赖管理器,您可以手动集成。ReactiveSwift
。
fork此仓库
如果您在项目中使用ReactiveLocation,请给我们发推文至@ackeecz或在Github上给我们点个赞。我们都非常乐意听到您的反馈!
分享就是关怀
当决定开源内部项目时,我们在这个#sharingiscaring
操作中开源了这个工具和仓库。
作者
Ackee团队
许可证
ReactiveLocation在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。