繁体   English   中英

无法连接到某些 iOS 设备中的 BLE 外设

[英]Can't connect to BLE Peripheral in some iOS devices

BLE 在 7 Plus (iOS 14.4.2) 和 6 (iOS 12) 上运行良好。 但是在 XR (14.4.2) 和 11 连接在centralManager.connect(peripheral, options: nil)之后卡住(无限连接)

外围设备处于连接模式,因为其他智能手机无法检测到它。 一开始以为是外围设备本身的射频模块(NRF52)有问题,但调试板也出现了问题。 重新启动智能手机没有帮助。 有趣的是,该应用程序在配备 M1 芯片的 MacBook 上运行良好

部分代码:

// Peripheral model

init(withPeripheral peripheral: CBPeripheral, advertisementData advertisementDictionary: [String : Any], andRSSI currentRSSI: NSNumber, using manager: CBCentralManager) {
    centralManager = manager
    basePeripheral = peripheral
    RSSI = currentRSSI
    super.init()
    advertisedName = parseAdvertisementData(advertisementDictionary)
    basePeripheral.delegate = self
}

public func connect() {
    centralManager.delegate = self
    centralManager.connect(basePeripheral, options: nil)
    print("Connecting to \(advertisedName ?? "device")...") 
// logs stops here
}

public func disconnect() {
    centralManager.cancelPeripheralConnection(basePeripheral)
    print("Cancelling connection with \(advertisedName ?? "device")...")
// triggers on VC dismiss
}

func centralManagerDidUpdateState(_ central: CBCentralManager) {
    if central.state != .poweredOn {
        print("Central Manager stated changed to \(central.state)")
    }
}

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
    if peripheral == basePeripheral {
        print("Connected to \(advertisedName ?? "device")")
        delegate?.peripheralDidConnect()
        discoverPrimaryServices()
    }
}

func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
    if peripheral == basePeripheral {
        print("Disconnected from \(advertisedName ?? "device")")
        delegate?.peripheralDidDisconnect()
    }
}

“外围设备处于连接模式,因为其他智能手机无法检测到它。” 您的意思是其他智能手机可以检测到它吗?

鉴于您列出的手机可以正常工作和不工作,我预计您的主板在蓝牙 5(iPhone 8 首次支持)方面存在问题。 NRF52 支持 BT5(它支持 5.2),但如果您编写了自己的固件,您可能会破坏支持。 我首先要确保你运行的是来自北欧的最普通的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM