我们正在使用Swift和IOS CBCentralManager。我们有蓝牙低功耗(双模设备)
由于空间不足,双模设备广告包没有名称或缩写名称。
当我们使用广告框架中包含的服务UUID调用“scanForPeripherals(withServices:options :)”时,如果我们还包含一个简短的设备名称,我们只会收到回复。
因此,通过名称字段,我们可以检测到设备。没有名称字段,我们无法检测到设备。我们期待返回一个CBPeripheral,显然有一个NIL名称。
我们得到早期Iphone的回复,例如Iphone 5,但后来Iphone和Ipads没有得到回复。
Lightblue等第三方软件可以检测到这些设备。此第三方软件每次在我们测试的每台设备上都能正确检测到。
必须有一些我们遗失的东西。
答案 0 :(得分:0)
我发现Apple的选项记录很差。看来这是覆盖这个用例的选项。
let CBCentralManagerScanOptionAllowDuplicatesKey: String
如果广告中没有名称,Apple必须看到重复的ID(或null)。
这是苹果写的Apple Scan feature AllowDuplicatesKey
由于BLE中广告框架的大小限制,这必须经常出现。
我可以看到为什么当设备不是以消费者为目标时,许多开发人员会选择不在GUI的名称上的32字节广告框架中浪费空间。