Рекламный ключ «Данные производителя» не разрешен в CoreBluetooth.

Я работаю с базовой структурой Bluetooth. Я пытаюсь создать периферийное устройство, используя эту структуру. Мое периферийное устройство рекламирует данные, используя:

manager=[[CBPeripheralManager alloc]initWithDelegate:self queue:nil];
[manager startAdvertising:dictionary];

вот словарь, который я передаю для рекламы:

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:
                                    @"name", CBAdvertisementDataLocalNameKey,@"some other data",CBAdvertisementDataManufacturerDataKey,nil];

когда я запускаю приложение, я получаю предупреждение: Ключ объявления «Данные производителя» не разрешен в CoreBluetooth

и я не получаю «некоторые другие данные», которые я отправил с помощью ключа CBAdvertisementDataManufacturerDataKey на центральной стороне. Я получаю имя на центральной стороне. Итак, как я могу отправить некоторые другие данные с рекламными данными?


person V-Xtreme    schedule 03.04.2013    source источник
comment
вы нашли решение по этому поводу?   -  person civiac    schedule 24.02.2014
comment
@civiac: Нет, на самом деле вы не можете изменить данные производителя. Я делал демонстрационное приложение, поэтому я использовал данные name_some (дифференцируйте с помощью _) и выполнял соответствующую обработку на центральной стороне. Далее В моем случае я получил устройство BLE в соответствии с моими потребностями.   -  person V-Xtreme    schedule 25.02.2014


Ответы (1)


Согласно CBPeripheralManager документации по startAdvertising состояния:

Необязательный словарь, содержащий данные, которые вы хотите рекламировать. Возможные ключи словаря AdvertisingData подробно описаны в справочнике по протоколу CBCentralManagerDelegate. Тем не менее, для объектов диспетчера периферийных устройств поддерживаются только два ключа: CBAdvertisementDataLocalNameKey и CBAdvertisementDataServiceUUIDsKey.

Эти ключи применимы только тогда, когда устройство iOS находится в центральном режиме и обнаруживает внешние периферийные устройства (т. е. только для чтения). Я понятия не имею, почему это ограничение действует при работе в периферийном режиме, вы можете попробовать отправить отчет об ошибке.

person russbishop    schedule 24.06.2013
comment
Они находятся в периферийном режиме, потому что устройство — это Apple iPhone, а не то, что хочет ваше приложение. Таким образом, все сведения о производителе — это данные Apple, а все сведения об устройстве — это iPhone. Что вы можете изменить, так это имя устройства, и вы указываете услуги, предлагаемые вашим приложением (которые iOS затем может комбинировать с услугами, предлагаемыми другими приложениями). - person James Billingham; 22.01.2015
comment
Хорошо, имеет смысл. Спасибо за разъяснения! - person russbishop; 22.01.2015
comment
@russbishop Привет, можешь взглянуть на мой вопрос? Мне требуется ваша помощь. stackoverflow.com/questions/46402904/ - person yusufonderd; 26.09.2017