代码之家  ›  专栏  ›  技术社区  ›  Michel

中央管理器(:didDisconnectPeripheral:错误:)未调用

  •  -2
  • Michel  · 技术社区  · 7 年前

    在一个 CoreBluetooth

    Peripherals Centrals 每个 Peripheral 提供一个服务,并有几个 中央 连接到它;它会记录这一点并知道有多少中心连接在一起。

    以同样的方式 Central 也会记录下来知道有多少 外围设备 连接在一起。

    我的问题是关于如何保持我刚才提到的会计记录,使之保持最新。

    外围设备 一方面,它起作用了,我可以看到 已断开连接。 外围设备管理器(:中心:didSubscribeTo:) 外围设备管理器(:中心:没有取消订阅:)

    中央 我想使用: 以及:

    但在这里,由于某些原因,它不起作用。第一个功能( 中央管理器(:didConnect:) )按预期调用,但不是第二个( 中央管理器(:didDisconnectPeripheral:错误:)

    我不需要解决的问题是,我不需要解决这个问题。但我可能错了。

    结果,我看到 外围设备

    我错过了什么?还是我做错了?

    我用两个设备测试这个应用程序。

    以下是一些相关代码:

    func centralManager(_ central: CBCentralManager,
                        didDiscover peripheral: CBPeripheral,
                        advertisementData: [String : Any],
                        rssi RSSI: NSNumber) {
        print(#function)
    
        if cbPerifList  == nil {cbPerifList = [CBPeripheral]()}
    
        if let perifIndx = cbPerifList!.index(where:{$0.identifier==peripheral.identifier}) {
            central.connect(cbPerifList[perifIndx], options: nil)
        } else {
            peripheral.delegate = self
            cbPerifList.append(peripheral)
            central.connect(peripheral, options: nil)
        }
    }
    

    我注意到的另一个可能相关的事情是下面的。我没有像通常那样通过按钮开关来切换外围设备,而是强制关闭当前扮演外围角色的设备上的应用程序,然后

    2 回复  |  直到 7 年前
        1
  •  1
  •   Chameleon    7 年前

    在我的 CoreBluetooth 应用程序

    func centralManager (_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
    }
    

    也许检查一下你的语法 didDisconnectPeripheral 功能。

        2
  •  0
  •   Michel    7 年前

    阅读评论似乎表明现在有了答案。换句话说,我想做的事听起来不可能。如果某位专家碰巧不知道,请告诉我们。

    与此同时,我提出了一个变通解决方案: