SwiftLocation – Daniele Margutti –中

借助SwiftLocation轻松进行位置管理器和信标监控

SwiftLocation是一个简单而强大的库,可让您轻松处理位置和信标监视,而无需担心CoreLocation设置,也无需在需要获取或使用用户当前位置的任何地方实现无聊的委托。

该库的主要目标是减少准备诸如移动设备的位置管理器之类的常见事物所需的代码量。 旧的可可模式需要您实施大量的样板代码才能获得简单的数据。 幸运的是,随着Swift的引入,iOS和Mac开发中的许多事情都在发生变化,我们被鼓励使用新的模式和范例,例如函数式编程(实际上是很旧的,很古老),以减少编写代码并提高可读性。
让我向您展示一些例子!

假设您需要准确获取当前用户的位置; 我们不需要连续的位置,并且如果相关的精度较低,我们也不想获得所有位置。 使用CLLocationManager,我们需要:

  • 实施授权请求,等待用户响应并开始监视会话
  • 实现CLLocationManagerDelegate协议的所有必需的委托
  • 如果相同的代码在不同的精度要求之间共享,我们需要根据需要过滤任何无效的位置,直到找到正确的位置,然后停止所有

这是一个工作示例:

大约有30行代码只能获取当前用户位置。 而且,除非尝试创建通用类,否则应在应用程序中的所有位置重复此样板代码。

使用SwiftLocation可以减少所有内容:

很好啊?
使用类似的代码,您还可以监视连续更新的位置,只需将频率参数从.OneShot更改为.Continuous(根据您的需要,您也只能获得重大更改或以指定的行驶间隔更改)。

有时,您可能只需要获取一个大概的位置,而无需启动电话的GPS硬件(并向用户弹出授权对话框)。 在这种情况下,您可以仅使用电话的IP地址获得有效的CLPlacemark:

SwiftLocation还可以帮助您反转地址字符串并获取CLPlacemark对象:它同时支持Apple和Google服务; 像往常一样,您只需一行代码即可实现:

SwiftLocation还允许您监视地理区域,并在进入和退出事件时得到通知:

虽然所有这些功能都是由LocationManager单例类提供的,但是SwiftLocation中还有另一个单例,如果您使用信标,则可能会对您有所帮助。
BeaconManager允许您:

  • 监视信标家庭或信标
  • 用您的设备模拟信标(由于Apple自有类的某些限制,它只能在前台使用)

通过调用monitorForBeacon()或monitorForBeaconFamily()函数,Beacon监视既可在后台运行,也可在前台运行。

想进一步了解SwiftLocation? 您有新功能的想法吗? 在SwiftLocation的GitHub页面上告诉我!