- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我负责开发一个应用程序,我需要在其中扫描信标,到目前为止,仅支持 iBeacon 信标就足够了,为了做到这一点,我使用 CoreLocation 扫描和检索信标数据,效果非常好.
现在要求增加扫描Eddystone信标的支持;但 CoreLocation 不支持这种类型的信标。因此,我必须使用 CoreBluetooth 来扫描和检索来自 Eddystone 信标的数据,请参阅@davidgyoung 的这篇内容丰富的帖子以进一步了解。
https://stackoverflow.com/a/41744019/6792878
因此,由于 CoreLocation 和 CoreBluetooth 使用蓝牙,我开始考虑要遵循的最佳实践以尽可能好地扫描这两种信标类型,我想出了以下方法:
同时使用 CoreLocation 和 CoreBluetooth 的可能性,CoreLocation 扫描 iBeacon,CoreBluetooth 扫描其他类型(在本例中为 Eddystone)。但没有发现任何声明或否定如果他们打断/影响对方的扫描仪。
抛弃 CoreLocation 并为这两种类型实现仅 CoreBluetooth 的扫描器,这将需要更努力的工作来深入挖掘信标细节。
最佳答案
如果您想扫描 iOS 上的 iBeacon 和其他信标类型,您必须同时使用 CoreLocation 和 CoreBluetooth。它们可以很好地协同工作。
重要的是要注意无法使用 CoreBluetooth 扫描 iBeacon,因为 iOS 通过返回一个空的制造商数据 NSData 对象来阻止访问任何匹配 iBeacon 格式的数据包的原始字节。
要查看它们一起正常工作的示例,请查看我的 Locate Beacon适用于 iOS 的应用程序,它使用 CoreBluetooth 扫描 iBeacon(使用 CoreLocation)和 Eddystone 和 AltBeacon。打开附近的两种信标类型,应用程序会同时检测到这两种信标。事实上,AppStore 上的示例屏幕截图显示了这一点。
虽然该应用程序的代码不是开源的,但它如何扫描 AltBeacon 和 CoreBluetooth 的基础知识在 iOS Beacon Tools 中是开源的项目。
关于ios - 同时使用 CoreLocation 和 CoreBluetooth 扫描信标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53572773/
我是一名优秀的程序员,十分优秀!