【发布时间】:2017-07-11 05:29:09
【问题描述】:
iOS的绑定请求是否可以得到用户的决定?
- 选择1:中止
- 选择 2:连接/绑定
我尝试使用 centralManagerDidUpdateState,但如果我打开蓝牙,它只会使用 CBManagerStatePoweredOn 调用一次。
#pragma mark - CBCentralManagerDelegate
- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
info(@"centralManagerDidUpdateState");
switch(central.state){
case CBManagerStateUnauthorized:
info(@"unauthorized");
break;
case CBManagerStatePoweredOff:
info(@"poweredOff");
break;
case CBManagerStatePoweredOn:
info(@"poweredOn");
break;
case CBManagerStateResetting:
info(@"resetting");
break;
case CBManagerStateUnknown:
info(@"unknown");
break;
case CBManagerStateUnsupported:
info(@"unsupported");
break;
}
}
我也尝试使用“didConnectPeripheral”和“didFailToConnectPeripheral”:
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
[peripheral setDelegate:self];
[self _cancelConnectionRequests];
[peripheral discoverServices:nil];
BleDevice* bleDevice = [knownDevices findDevice:[peripheral.identifier UUIDString]];
devicePaired(bleDevice.deviceId, bleDevice.primaryServiceUuid);
}
- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error {
[peripheral setDelegate:self];
[self _cancelConnectionRequests];
[peripheral discoverServices:nil];
BleDevice* bleDevice = [knownDevices findDevice:[peripheral.identifier UUIDString]];
deviceNotPaired(bleDevice.deviceId, bleDevice.primaryServiceUuid);
}
但是在点击“Abort”或“Connect/Bond”后这两种方法都不会被调用! 至少在尝试连接到设备时只调用了“didConnectPeripheral”——但这发生在弹出窗口出现之前!
还有其他想法吗?
注意:我在扫描、连接或绑定时没有任何问题 BLe 设备 - 我只想知道用户是否接受了 来自他的 iPhone 的绑定请求!
【问题讨论】:
标签: ios objective-c bluetooth-lowenergy cbcentralmanager