2013-02-12 2 views
4

Я хочу рекламировать один идентификатор, позволяющий говорить «stackoverflow1» на устройстве. Поэтому люди, близкие к датчику, могут получить это сообщение (добро пожаловать в wwdc2012) в виде всплывающих окон на iPhone. Это оно! что нет никакого обновления стоимости или чего-либо еще, другими словами, я просто хочу знать, в какой комнате я вошел. В другой комнате есть еще один датчик, препятствующий «stackoverflow2».bluetooth рекламный пакет с низкой энергией и топология

Теперь вопрос в том, должен ли я помещать датчик помещения (рекламодателя) в качестве периферийных устройств и IP-телефонов посетителей в качестве центров?

Если ваш ответ «да», могу ли я отправить этот идентификатор в рекламный пакет? то есть я могу пропустить соединение с периферией помещения? Пожалуйста, руководство меня немного, но на этом

Благодарности

ответ

4

Да, айфоны должны быть централями и устройство в комнате должна быть периферией. Совершенно верно, чтобы в рекламе было достаточно данных о том, что приложение iOS может сделать что-то полезное, просто увидев, что периферийное устройство рекламируется без фактического подключения к нему. Таким образом, несколько центров/телефонов могут сразу обнаруживать близость без единого телефона, связывающего эксклюзивное соединение с устройством. Вместо того, чтобы указывать номер в названии услуги, вы можете разместить его в рекламных данных для устройства, предоставив им все одинаковое имя службы. Таким образом, приложение iOS не обязательно должно знать полный список комнат (т. Е. Услуги) заранее, и их можно добавить без изменения приложения.

Одним словом, суть того, что вы описали, должна работать нормально и кажется мне надежным подходом.

+0

Это лучший ответ, который я мог бы дать мне. Большое спасибо. Надеюсь, вы также можете указать мне правильное направление о том, как вводить данные в рекламные данные. Потому что яблоко по какой-то причине не предоставляет ссылку на класс для CBPeripheral в основном bluetooth. Там вы можете найти только CBPheripheralDelegate. – CppChase

4

Вы можете включить информацию в рекламу из периферии как данные «Специфические производители». Затем приложение iOS может получить его из словаря рекламных данных, используя CBAdvertisementDataManufacturerDataKey.

+0

К сожалению, я не думаю, что вы можете использовать этот ключ. Из документации: advertData Дополнительный словарь, содержащий данные, которые вы хотите рекламировать. Возможные ключи словаря adsData подробно описаны в CCPentralManagerDelegate Protocol Reference. Тем не менее, для периферийных объектов менеджера поддерживаются только два ключа: CBAdvertisementDataLocalNameKey и CBAdvertisementDataServiceUUIDsKey. – mflac

+0

Помните, что в моем случае телефон является центральным и подключается к периферии. Периферийное приложение заполняет CBAdvertisementDataManufacturerDataKey данными, и я не беру на себя этот ключ из рекламных данных. например: 'NSData * versionInfo = [advertData objectForKey: CBAdvertisementDataManufacturerDataKey];' –

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