Как получить парное устройство BLE в iOS? - PullRequest
0 голосов
/ 30 ноября 2018

Я соединяю BLE с CoreBluetooth и подключен.

Теперь, когда я возвращаюсь к экрану своего приложения, я хочу убедиться, что BLE уже подключен к устройству iOS.

  1. Если я сохраню значение в значениях по умолчанию и удалю приложение, этот случай не будет работать для извлечения устройства.

  2. Если пользователь удалит сопряженное периферийное устройство Bluetooth из меню «Настройка» -> «Bluetooth» -> список устройств, в этом случаетакже не работает для идентификации.

    NSArray *ary = [self.bleMgr retrieveConnectedPeripheralsWithServices:@[[CBUUID UUIDWithString:@"180A"]]];
    
    NSUUID *nsUUID = [[NSUUID alloc] initWithUUIDString:identifier];
    NSArray *temp = [self.bleMgr retrievePeripheralsWithIdentifiers:@[nsUUID]];
    

Выше обеих строк кода не дает надежного результата.

Как получить это сопряженное устройство BLE в приложении?

1 Ответ

0 голосов
/ 03 декабря 2018

При первом обнаружении периферийного устройства система генерирует идентификатор (UUID, представленный объектом NSUUID) для идентификации периферийного устройства.

Затем вы можете сохранить этот идентификатор (используя, например, ресурсы класса NSUserDefaults), а затем использовать его, чтобы попытаться повторно подключиться к периферийному устройству, используя retrievePeripheralsWithIdentifiers: метод класса CBCentralManager.

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

knownPeripherals = [myCentralManager retrievePeripheralsWithIdentifiers:savedIdentifiers];

Класс NSUUID не является бесплатным для моста через CoreFoundation.CFUUID.При необходимости используйте строки UUID для преобразования между CFUUIDRef и NSUUID.Два объекта NSUUID не гарантируются быть сравнимыми по значению указателя (как CFUUID);используйте isEqual (_ :) для сравнения двух экземпляров NSUUID.

См. это: https://developer.apple.com/documentation/foundation/nsuuid

См. последние два раздела: https://developer.apple.com/library/archive/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/BestPracticesForInteractingWithARemotePeripheralDevice/BestPracticesForInteractingWithARemotePeripheralDevice.html#//apple_ref/doc/uid/TP40013257-CH6-SW1

...