Как передать UUID устройства в среде CoreBluetooth, чтобы клиент мог повторно подключиться позже

Я только что написал простое приложение, в котором я сканирую и подключаюсь к периферийному устройству (которое также является устройством IOS). Однако объект CBPeripheral, который я получаю из функции ConnectPeripheral, не имеет UUID устройства и всегда равен нулю. Теперь я пытаюсь понять, где я могу установить его, чтобы он прошел. Вот что я делаю.

Для рекламы своих услуг я делаю

NSDictionary *advertisingDict=[NSDictionary dictionaryWithObject: services forKey:CBAdvertisementDataServiceUUIDsKey]
[manager startAdvertising:advertisingDicts];

(Из фреймворка я понимаю, что не могу передать UUID устройства в рекламном пакете. Поправьте меня, если я ошибаюсь)

Мой клиент сканирует службу и входит в функцию

centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral

И, как и ожидалось, периферийный.uuid равен нулю. Если я вызываю connectPeripheral на этом периферийном устройстве, он тоже работает нормально. Я не уверен, как он понимает, какое устройство подключать, когда uuid равен нулю. Кроме того, что мне нужно сделать, если я хочу повторно подключиться позже. Как мне заполнить этот uuid?


person Creador    schedule 26.08.2012    source источник
comment
IOS 6 все еще находится под соглашением о неразглашении. Обсудите это на форуме разработчиков Apple.   -  person Mick MacCallum    schedule 26.08.2012


Ответы (1)


У него есть обходной путь. Вы можете передать его вместо локального имени устройства следующим образом:

[self.peripheralManager startAdvertising:@{CBAdvertisementDataLocalNameKey : *the UUID*}];

А в другом устройстве в функции didDiscoverPeripheral можно получить так:

[advertisementData objectForKey:@"kCBAdvDataLocalName"]
person Aboelseoud    schedule 16.05.2013