找出用户要求绑定BLe设备(Objective-C,iOS 10)的决定
问题描述:
是否有可能获得用户对iOS绑定请求的决定?找出用户要求绑定BLe设备(Objective-C,iOS 10)的决定
- 选择1:Abbort
- 选择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);
}
但是这两种方法点击“取消”或“连接/邦德”后,不叫! 至少只有在尝试连接设备时才会调用“didConnectPeripheral” - 但在弹出窗口出现之前会发生这种情况!
还有其他想法吗?
注:我有扫描没有问题,连接或焊接与 BLE装置 - 我只是想知道,如果用户接受了他的iPhone的 结合请求!
答
不,这是不可能的。我不知道苹果为什么做出这个决定,因为从安全的角度来看,应用程序知道链接是否被正确加密和验证可能很重要。
如果您可以控制外围设备的固件,则可以在配对事件发生时使其发送某些特性。
>>>如果您可以控制外围设备的固件,则可以在配对事件发生时使其发送特性。 SbstnErb