В настоящее время я работаю над приложением, которое действует как 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 и ниже: приложение записывает зашифрованное значение все время, даже если пользователь выбирает «Отмена» во всплывающем окне запроса пар, если приложение находится на переднем плане, и случайное приложение записывает зашифрованное значение или нет, если приложение находится в фоновом режиме.
Я не понимаю, почему приложение ведет себя по-разному в разных версиях ОС.
Вопросы:
Могу ли я сделать так, чтобы приложение всегда записывало значение с помощью шифрования, или если пользователь выбирает «Отмена» во всплывающем окне с запросом пары, то приложение не записывает значение?
Как контролировать всплывающее окно запроса на пару, зависит от выбора пользователя?
Как я могу управлять сопряжением, когда приложение в фоновом режиме?
Заранее благодарю за помощь.
Привет.