【问题标题】:Find out users decision of asking to bond a BLe device (Objective-C, iOS 10)找出用户要求绑定 BLe 设备的决定(Objective-C,iOS 10)
【发布时间】: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


    【解决方案1】:

    不,这是不可能的。我不知道为什么 Apple 会做出这个决定,因为从安全的角度来看,知道链接是否正确加密和身份验证对于应用程序来说可能很重要。

    如果您可以控制外围设备的固件,则可以使其在配对事件发生时发送有关特性的内容。

    【讨论】:

    • >>> 如果你可以控制外围设备的固件,你可以让它在配对事件发生时发送一些关于特性的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2014-08-29
    • 2020-01-19
    • 2020-10-17
    • 1970-01-01
    • 2017-08-02
    相关资源
    最近更新 更多