2013-08-01 6 views
4

Я делаю приложение, в котором устройство iOS должно быть периферийным и центральным одновременно. Когда он обнаруживает периферийное устройство, иногда его именем является модель (например, iPhone), а не фактическое имя (например, Мой iPhone). В этом случае вместо этого используется UUID (обычно это (null), когда имя является фактическим именем). Я правильно установил имя в startAdvertising:, и когда это произойдет, настоящее имя не указывается соответствующим ключом в advertisementDataПроблемы с Core Bluetooth

Как я могу убедиться, что настоящее имя всегда существует?

Это, как я устанавливаю имя:

[self.peripheralManager startAdvertising:@{ CBAdvertisementDataLocalNameKey : [[UIDevice currentDevice] name], CBAdvertisementDataServiceUUIDsKey : @[SERVICE_UUID] }]; 

ответ

2

Если приложение, которое является реклама не постоянно на переднем плане, нет никаких гарантий того, что данные рекламные (кроме определенных услуг вы ищете для) будут видны. Данные adv помещаются в хэш, когда приложение перемещается в фоновый режим, чтобы иметь тот же опыт при одновременном запуске нескольких приложений с помощью corebluetooth против одного приложения (поскольку сам iPhone может рекламировать только конечный объем данных). Тем не менее, я заметил, что, как только устройство увидится на переднем плане, если приложение переместится на задний план, вы все равно сможете увидеть большинство данных adv. Дайте мне знать, если у вас есть вопросы.

+0

До сих пор это происходило на переднем плане ... – Macro206

+0

Правильно ли вы устанавливаете ключ CBAdvertisementDataLocalNameKey внутри своего словаря рекламы? –

+0

Я правильно настраиваю его. – Macro206

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