2014-11-14 3 views
2

У меня возникла проблема с CoreBluetooth Framework.CBPeripheral, получить локальный периферийный идентификатор

Как пример, у меня есть два устройства, и каждое устройство выполняет как рекламу, так и сканирование. Таким образом, я использую CBCentralManager и CBPeripheralManager для каждого.

Итак, для упрощения проблемы предположим, что Device1 осуществляет широковещательную рассылку и сканирование Device2.

Когда CBCentralManager на устройство2 обнаружить DEVICE1, обратного вызова centralManager: didDiscoverPeripheral: advertisementData: RSSI: называется, и я могу получить идентификатор DEVICE1 по телефону [peripheral.identifier UUIDString].

Как я могу получить идентификатор локального устройства (Device2)? Я имею в виду, что оба устройства рекламируются, Device1 также обнаружит Device2 и получит его периферийный идентификатор, BUT КАК я могу получить этот идентификатор (какой-то собственный адрес) на Device2?

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

ответ

6

К сожалению, вы не можете этого сделать. Идентификатор, возвращаемый [peripheral.identifier UUIDString], автоматически генерируется iOS на принимающем устройстве. Он засевается адресом передатчика Mac (который не изменяется) и временем, которое устройство начинает видеть iOS (что меняет).

Из-за второго фактора не предсказуем и тот факт, что алгоритм генерации идентификатора не опубликован, вы не можете предсказать, что этот идентификатор будет на стороне передатчика.

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

+0

Спасибо за ответ! Возможно ли отправить это значение от приемного устройства? @davidgyoung – user1612361

+1

У вас может быть идентификатор как характеристика GATT, но вам нужно установить соединение BLE для его чтения. Это немного медленный и склонный к ошибкам, но возможно. – davidgyoung

+0

Спасибо, @davidgyoung. Но можно ли подключиться к периферии в фоновом режиме? Могу ли я принять это соединение или он требует состояния переднего плана? – user1612361

Смежные вопросы