无法在iOS上恢复蓝牙状态

时间:2015-06-07 12:47:52

标签: ios xcode bluetooth

我几周来一直试图弄清楚iOS中Core Bluetooth的状态保存和恢复是如何工作的,但我完全迷失了。

到目前为止,我已完成以下工作:

为我的CBCentralManager添加了恢复标识符

        centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil   options:@{CBCentralManagerOptionRestoreIdentifierKey:@"myCentralManager"}];

哪个应该让我的应用程序能够调用委托方法:

centralManager:(CBCentralManager *)central
  willRestoreState:(NSDictionary *)dict;

在这里,我正在尝试重新连接到我的外围设备,如果我在应用程序暂停之前有连接,否则我会尝试再次扫描我的外围设备,如下所示:

if (dict[CBCentralManagerRestoredStatePeripheralsKey]) {
    for (CBPeripheral *currentPeripheral in peripherals) {
        peripheral = currentPeripheral;
    }
    // Connect to peripheral
}
else{
    // Scan for UUID
}

我这样做是对的,我是关闭还是完全错了?

1 个答案:

答案 0 :(得分:0)

现在对我有用。 我初始化我的中央管理器,就像我最初一样,然后在willRestoreState方法中,我运行以下代码:

NSArray* peripherals = [central retrieveConnectedPeripheralsWithServices:[NSArray arrayWithObject:UUID]];
if ([peripherals count] > 0) {
    _discoveredPeripheral = [peripherals objectAtIndex:0];
    _discoveredPeripheral.delegate= self;
    [central connectPeripheral:_discoveredPeripheral options:nil];
} else {
[self scan];
}