如何在 swift 4 中从低功耗蓝牙设备获取广告和响应数据?



我的IOS应用程序正在尝试从蓝色设备获取广告和响应数据,而无需连接到它。播发和响应数据都应该是 31 字节长(我们也使用了 4 个字节的标头,加上 27 个字节的数据(,总共 62 个字节。虽然安卓版本的应用程序可以轻松获取所有这些数据,但我无法快速获取它们。我在核心蓝牙中调用了广告,但只收到 27 字节的响应数据。我找不到响应数据的 4 个标头字节,也找不到 31 个字节的广告数据。

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
......
let data2: NSDictionary? = advertisementData[CBAdvertisementDataServiceDataKey] as? NSDictionary
    if data2 != nil {
        let str :Data = (data2!.allValues)[0] as! Data
        bytes = [UInt8](str)
        print("advertisement data: ",bytes)
    }
}

打印广告数据,您将看到iOS正在获取完整的广告数据。

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
    print(advertisementData)
    // Add discovered peripheral to the list
    nearbyPeripherals.append(peripheral)
}

您可以按照本指南进行操作 iOS 核心蓝牙. https://www.raywenderlich.com/231-core-bluetooth-tutorial-for-ios-heart-rate-monitor

最新更新