【问题标题】:How can I scan for BLE devices on Iphone 6 which do not advertise a name如何在 Iphone 6 上扫描不宣传名称的 BLE 设备
【发布时间】:2018-05-30 08:06:30
【问题描述】:

我们正在使用 Swift 和 IOS CBCentralManager。我们有一个低功耗蓝牙(双模设备)

由于空间不足,双模设备广告包没有名称或简称。

当我们使用包含在广告框架中的服务 UUID 调用“scanForPeripherals(withServices:options:)”时,只有在我们还包含短设备名称时才会收到响应。

因此,通过名称字段,我们可以检测到设备。如果没有名称字段,我们将无法检测到设备。我们期望返回一个 CBPeripheral,显然是一个 NIL 名称。

我们在早期的 Iphone(例如 Iphone 5)上得到响应,但后来的 Iphone 和 Ipad 没有得到响应。

Lightblue 等第三方软件可以检测到这些设备。这个第 3 方软件每次都能在我们测试过的每台设备上正确检测。

一定有我们遗漏的东西。

【问题讨论】:

    标签: ios swift bluetooth-lowenergy ios-bluetooth


    【解决方案1】:

    我发现 Apple 提供了一个记录不充分的选项。似乎这是涵盖此用例的选项。

    let CBCentralManagerScanOptionAllowDuplicatesKey: String
    

    如果广告中没有名称,Apple 必须看到重复的 ID(或为空)。

    这是苹果写的Apple Scan feature AllowDuplicatesKey

    由于 BLE 中广告帧的大小限制,这必须经常弹出。

    我明白为什么许多开发者会选择不在 GUI 名称上的 32 字节广告框架中浪费空间,而设备不是面向消费者的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多