Objective-c iOS BLE записывает значение с шифрованием - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я работаю над приложением, которое действует как BLE Central для связи с периферийным устройством Bluetooth. Я пытаюсь записать значение в Периферийное устройство с шифрованием, чтобы другие не могли его прослушать.

Я объявил службы и характеристики как NSArray.

    myservices = @[[CBUUID UUIDWithString:@"1stServiceUUID"], [CBUUID UUIDWithString:@"2ndServiceUUID"]];

mycharacterstics = @[[CBUUID UUIDWithString:@"1sCharacteristicUUID"], [CBUUID UUIDWithString:@"2ndCharacteristicUUID"]];

Когда приложение обнаруживает подходящую службу поблизости, приложение подключает ее и сразу записывает значение из didDiscoverCharacteristicsForService

    for (CBCharacteristic *characteristic in service.characteristics) {
    if ([characteristic.UUID isEqual:mycharacterstics[0]]) {
        _discoveredPeripheralCharactersticsNotify = characteristic;

        [peripheral setNotifyValue:YES forCharacteristic:characteristic];
    }

    if ([characteristic.UUID isEqual:mycharacterstics[1]]) {
        _discoveredPeripheralCharactersticsWrite = characteristic;

        [peripheral setNotifyValue:YES forCharacteristic:characteristic];
    }

    [self.discoveredPeripheral writeValue:testData forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];
}

Ожидаемый результат:

Приложение записывает зашифрованное значение на периферию как на переднем, так и на заднем плане.

Фактический результат:

Приложение на переднем плане: приложение отображает всплывающее окно с запросом пары, либо пользователь хочет «соединить» или «отменить». Если выбрано «Pair», значение зашифровано, поэтому его невозможно прослушать. Если выбрано «Отмена», записывается значение, которое НЕ зашифровано, поэтому его можно прослушать.

Приложение в фоновом режиме: приложение не отображает запрос пары. Просто записывает значение в периферийное устройство, как только подключается без шифрования.

Другое поведение:

iOS 10 и ниже: приложение записывает зашифрованное значение все время, даже если пользователь выбирает «Отмена» во всплывающем окне запроса пар, если приложение находится на переднем плане, и случайное приложение записывает зашифрованное значение или нет, если приложение находится в фоновом режиме.

Я не понимаю, почему приложение ведет себя по-разному в разных версиях ОС.

Вопросы:

Могу ли я сделать так, чтобы приложение всегда записывало значение с помощью шифрования, или если пользователь выбирает «Отмена» во всплывающем окне с запросом пары, то приложение не записывает значение?

Как контролировать всплывающее окно запроса на пару, зависит от выбора пользователя?

Как я могу управлять сопряжением, когда приложение в фоновом режиме?

Заранее благодарю за помощь.

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...