同时使用CoreLocation和CoreBluetooth扫描信标

时间:2018-12-01 16:21:46

标签: ios swift core-location core-bluetooth beacon

我负责开发需要扫描信标的应用程序,到目前为止,仅对iBeacon信标的支持就足够了,为此,我使用CoreLocation扫描并检索了非常有用的信标数据。

现在需要增加对扫描Eddystone信标的支持;但CoreLocation不支持此类信标。因此,我必须使用CoreBluetooth来扫描和检索Eddystone信标中的数据,请参阅@davidgyoung的这篇非常有用的文章,以进一步了解。

https://stackoverflow.com/a/41744019/6792878

因此,由于CoreLocation和CoreBluetooth使用的是蓝牙,因此我开始考虑遵循最佳实践来扫描两种最佳信标类型,因此我提出了以下建议:

  • 可以同时使用CoreLocation和CoreBluetooth,CoreLocation扫描iBeacon,CoreBluetooth扫描其他类型(在这种情况下为Eddystone)。但没有发现任何陈述或否定它们是否干扰/影响对方的扫描仪。

  • 抛弃这两种类型的CoreLocation并仅实现CoreBluetooth扫描程序,这将需要更多的工作来深入挖掘信标细节。

1 个答案:

答案 0 :(得分:2)

如果要在iOS上同时扫描iBeacon和其他信标类型,则必须同时使用 CoreLocation和CoreBluetooth。他们在一起很好。

请注意,无法使用CoreBluetooth扫描iBeacon ,因为iOS会通过返回空的制造商数据NSData对象来阻止对任何与iBeacon格式匹配的数据包的原始字节的访问。 / p>

要查看无故障工作的示例,请查看我的Locate Beacon iOS应用程序,该应用程序同时扫描iBeacon(带有CoreLocation)和Eddystone和AltBeacon(带有CoreBluetooth)。开启附近的两种信标类型,应用会同时检测到这两种信标。确实,AppStore上的示例屏幕截图显示了这一点。

尽管该应用程序的代码不是开源的,但是在iOS Beacon Tools项目中,它扫描AltBeacon和CoreBluetooth的基础知识还是开源的。