【问题标题】:Using CoreLocation and CoreBluetooth scan beacons at the same time同时使用 CoreLocation 和 CoreBluetooth 扫描信标
【发布时间】:2019-05-03 12:12:30
【问题描述】:

我负责开发一个需要扫描信标的应用程序,到目前为止,仅支持 iBeacon 信标就足够了,为了做到这一点,我使用 CoreLocation 扫描和检索信标的数据,效果非常好.

现在需要添加对扫描 Eddystone 信标的支持;但 CoreLocation 不支持这种类型的信标。因此,我必须使用 CoreBluetooth 从 Eddystone 信标中扫描和检索数据,请参阅@davidgyoung 的这篇内容丰富的帖子以进一步了解。

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

因此,由于 CoreLocation 和 CoreBluetooth 都使用蓝牙,我开始考虑尽可能好地扫描这两种信标类型的最佳做法,我想出了以下几点:

  • 可以同时使用 CoreLocation 和 CoreBluetooth,CoreLocation 扫描 iBeacon 和 CoreBluetooth 扫描其他类型(在本例中为 Eddystone)。但是如果他们中断/影响彼此的扫描仪,则没有发现任何声明或否定的内容。

  • 放弃 CoreLocation 并为这两种类型实施仅限 CoreBluetooth 的扫描仪,这将需要更加努力地深入挖掘信标细节。

【问题讨论】:

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


    【解决方案1】:

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

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

    要查看这些协同工作的示例,请查看我的 iOS 版 Locate Beacon 应用程序,它可以扫描 iBeacon(使用 CoreLocation)和 Eddystone 以及使用 CoreBluetooth 的 AltBeacon。打开附近的两种信标类型,应用程序同时检测到两者。确实,AppStore 上的示例屏幕截图显示了这一点。

    虽然该应用的代码不是开源的,但它如何扫描 AltBeacon 和 CoreBluetooth 的基础知识在 iOS Beacon Tools 项目中是开源的。

    【讨论】:

    • 再次感谢您的回答,看来您是信标的堆栈溢出大师? 无论如何,实际上我检查了您和 Locate 的其他答案,我怀疑您使用两者来实现它,尤其是与 Region 相关的设置.但是当我检查工具时,我略略略读了一下,并使用 CoreBluetooth 看到了所有内容。
    • 我明天会检查它,如果需要会回复您。再次感谢
    • 是的,iOS Beacon Tools 仅使用 CoreBluetooth。该项目的重点是使用该框架提供信标扫描功能。与 CoreLocation 同时使用没有什么特别的技巧。
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2012-12-02
    • 2013-05-10
    • 2020-09-10
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多