CoreBluetooth XPC连接在关闭viewcontroller时无效

时间:2017-05-09 21:43:48

标签: ios objective-c core-bluetooth

在我完成与蓝牙设备的断开连接后,看到他们已经在didDisconnectPeripheral委托中断开连接,我试图解除我的viewcontroller。

当发生这种情况时,我会看到以下消息:" [CoreBlueooth] XPC连接无效"

在解除视图控制器之前,是否有特定的东西需要用蓝牙清理?

7 个答案:

答案 0 :(得分:8)

我将CBCentralManager放到单身人士身上,错误信息就解决了。

CBCentralManager不会被取消分配)

答案 1 :(得分:6)

我收到以下消息:

  

[CoreBlueooth] XPC连接无效

我无法使用以下非常简单的实现扫描BLE设备:

NSObject<CBCentralManagerDelegate, CBPeripheralDelegate>

我的解决方案是在我的Info.plist中为隐私权 - 蓝牙外围设备使用说明 NSBluetoothPeripheralUsageDescription添加一个值,说明我对蓝牙外设的处理方式。

info.plist中看起来像这样:

<key>NSBluetoothPeripheralUsageDescription</key>
<string>Play with BLE Compatible devices<string>

在这里写一些更准确的内容;)

答案 2 :(得分:3)

CBCentralManager引用应该是作为成员变量的类的强引用。它不能用作本地参考。

答案 3 :(得分:1)

试试这个:

CBPeripheral *mConnectedPeripheral;

-(void)viewDidDisappear:(BOOL)animated{
    [_centralManager cancelPeripheralConnection:mConnectedPeripheral];
}

答案 4 :(得分:1)

当我将所有BLE方法移至专用类(BLEController)并保持ViewController清洁时,发生了同一问题。首先,我试图像这样在ViewController类中初始化它:

let _ = BLEController()

这导致“ XPC连接无效”问题。真正有用的是将对象移至AppDelegate类。老实说,我不知道它为什么起作用以及有什么区别。

答案 5 :(得分:0)

好吧,我遇到了这个问题,在尝试将必要的密钥添加到Info.plist之后,它仍然可以正常工作,并且我现在没有使用的视图(在AppDelegate中)。 因此,如果仍然无法使用,请尝试以下操作。

我曾经用过:(在Swift中)

_ = BluetoothMngr.init(config: bleConfig)

这里的问题是管理蓝牙的变量没有保留,因此当我们添加BLE回调时,这些变量最终变成一个空类,因此只需在要保留的地方创建一个全局变量即可(这就是为什么它可以与singleton一起使用的原因)并查看这些内容是否保留)。

self.bleMngr = BluetoothMngr.init(config: bleConfig)

为我工作,希望能为您提供帮助。

答案 6 :(得分:0)

以我为例,我关闭了功能中的应用沙箱,并且可以正常工作