我有一个带有 BLE 模块的小硬件,可以与 iOS 设备进行通信。
我想使用 iBeacon 执行发现(因此使用 iBeacon 广告数据包),并且 - 显然 - 使用 CoreBluetooth 连接(和数据交换),但存在一些问题。
在描述问题之前,我必须告诉您,我需要在发现阶段提供这些信息:
序列号(内部需要)- 6 个字符和 10 个字符 数字。
“硬件版本”,用于指定产品类型(每个产品 使用不同的协议(protocol))。
我遇到的问题基本上是如何执行发现阶段,然后连接到特定的发现对象:
A.在 iBeacon adv 数据包中,我应该使用 UUID 字段进行串行 硬件版本的编号和主要/次要字段,但如果我这样做, 设备将基本上无法被发现(iBeacon SDK for iOS 在开始监控之前需要知道要查找的UUID 阶段,因此每个设备的阶段不可能不同)。
B.在 iOS 中,iBeacon 功能可通过 CoreLocation 库获得, 标准 BLE 功能可通过 CoreBluetooth 获得。 如果我使用 iBeacon 广告包,则发现的对象 CoreBluetooth 库看不到包的任何信息 (所以,问题是:“我如何知道哪个是带有序列号的对象 XYZ?”)。
最佳答案
我意识到解决我的问题的一个可能的解决方案是以“循环方式”广告 iBeacon 和标准 BLE 包。
我尝试了一下(我宣传了 500 毫秒的 iBeacon 包和 500 毫秒的标准 BLE 包),标准 BLE 似乎没问题。
我仍然需要更多地调查 iBeacon discovery 对此有何 react ,但正如所说,它可能是一个解决方案。
关于core-location - iBeacon 和 XCode - 使用 CoreLocation 进行发现并与 CoreBluetooth 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909907/