同时使用 CoreLocation 和 CoreBluetooth 扫描信标
Using CoreLocation and CoreBluetooth scan beacons at the same time
我负责开发一个应用程序,我需要在其中扫描信标,到目前为止,仅支持 iBeacon 信标就足够了,为了做到这一点,我使用 CoreLocation 扫描和检索有效信标的数据很好。
现在需要增加扫描Eddystone信标的支持;但 CoreLocation 不支持这种类型的信标。因此,我必须使用 CoreBluetooth 来扫描和检索来自 Eddystone 信标的数据,请参阅来自@davidgyoung 的非常有用的 post 以进一步了解。
因此,由于 CoreLocation 和 CoreBluetooth 使用蓝牙,我开始考虑要遵循的最佳实践以尽可能好地扫描两种信标类型,我想出了以下方法:
同时使用 CoreLocation 和 CoreBluetooth 的可能性,CoreLocation 扫描 iBeacon,CoreBluetooth 扫描其他类型(在本例中为 Eddystone)。但是没有发现任何说明或否定如果他们 interrupt/affect 彼此的扫描仪。
放弃 CoreLocation 并为这两种类型实现仅 CoreBluetooth 扫描器,这将需要更努力的工作来深入挖掘信标细节。
如果您想扫描 iOS 上的 iBeacon 和其他信标类型,您必须同时使用 CoreLocation 和 CoreBluetooth。他们合作得很好。
重要的是要注意无法使用 CoreBluetooth 扫描 iBeacon,因为 iOS 阻止访问与 iBeacon 格式匹配的任何数据包的原始字节返回一个空的制造商数据 NSData 对象。
要查看它们一起正常工作的示例,请查看我的 Locate Beacon 应用 iOS,它可以扫描 iBeacon(使用 CoreLocation)以及使用 CoreBluetooth 的 Eddystone 和 AltBeacon。打开附近的两种信标类型,应用程序会同时检测到这两种信标。事实上,AppStore 上的示例屏幕截图显示了这一点。
虽然该应用程序的代码不是开源的,但它如何扫描 AltBeacon 和 CoreBluetooth 的基础知识在 iOS Beacon Tools 项目中是开源的。
我负责开发一个应用程序,我需要在其中扫描信标,到目前为止,仅支持 iBeacon 信标就足够了,为了做到这一点,我使用 CoreLocation 扫描和检索有效信标的数据很好。
现在需要增加扫描Eddystone信标的支持;但 CoreLocation 不支持这种类型的信标。因此,我必须使用 CoreBluetooth 来扫描和检索来自 Eddystone 信标的数据,请参阅来自@davidgyoung 的非常有用的 post 以进一步了解。
因此,由于 CoreLocation 和 CoreBluetooth 使用蓝牙,我开始考虑要遵循的最佳实践以尽可能好地扫描两种信标类型,我想出了以下方法:
同时使用 CoreLocation 和 CoreBluetooth 的可能性,CoreLocation 扫描 iBeacon,CoreBluetooth 扫描其他类型(在本例中为 Eddystone)。但是没有发现任何说明或否定如果他们 interrupt/affect 彼此的扫描仪。
放弃 CoreLocation 并为这两种类型实现仅 CoreBluetooth 扫描器,这将需要更努力的工作来深入挖掘信标细节。
如果您想扫描 iOS 上的 iBeacon 和其他信标类型,您必须同时使用 CoreLocation 和 CoreBluetooth。他们合作得很好。
重要的是要注意无法使用 CoreBluetooth 扫描 iBeacon,因为 iOS 阻止访问与 iBeacon 格式匹配的任何数据包的原始字节返回一个空的制造商数据 NSData 对象。
要查看它们一起正常工作的示例,请查看我的 Locate Beacon 应用 iOS,它可以扫描 iBeacon(使用 CoreLocation)以及使用 CoreBluetooth 的 Eddystone 和 AltBeacon。打开附近的两种信标类型,应用程序会同时检测到这两种信标。事实上,AppStore 上的示例屏幕截图显示了这一点。
虽然该应用程序的代码不是开源的,但它如何扫描 AltBeacon 和 CoreBluetooth 的基础知识在 iOS Beacon Tools 项目中是开源的。