CLBeacon - Хранение и извлечение информации из PeripheralData NSDictionary?

Когда вы начинаете рекламировать CLBeacon с периферийными данными, можете ли вы передать NSString или UIImage в этот словарь, который вы могли бы затем отобразить при обнаружении маяка?

Например, если я хочу написать сообщение другу, а затем, когда друг войдет в зону маяка, смогу ли я отобразить сообщение на своем телефоне, сохранив сообщение в NSDictionary, а затем извлекая его? Если да, то как? Если нет, то есть ли другой способ?

Спасибо!


person Connor    schedule 05.12.2013    source источник


Ответы (2)


Итак, вы спрашиваете, можете ли вы добавить дополнительную информацию к объявлению маяка, отправляемому устройством маяка, которое может искать пользовательское приложение?

Ответ - нет. Протокол iBeacon представляет собой очень короткий фиксированный пакет данных. Нет возможности добавлять в пакеты дополнительную информацию.

Вы можете разработать и внедрить свой собственный сервис BLE, являющийся альтернативой iBeacons, и реализовать его как на передатчике, так и на приемнике.

Вы также можете использовать гибридный подход, при котором вы используете стандартное обнаружение iBeacon для поиска маяков, а когда вы обнаруживаете интересующий вас маяк, инициируете двусторонний обмен данными BLE с маяком и запрашиваете у него дополнительную информацию. Насколько я понимаю, некоторые из устройств BLE, которые продаются как iBeacons, могут запускать специальное программное обеспечение, которое реализует такие вещи. (Многие из этих устройств имеют процессоры ARM, то же семейство чипов, что и устройства iOS.

person Duncan C    schedule 06.12.2013

Нет, вы не можете этого сделать. iBeacon на базе iOS (как и все другие стандартные iBeacon) будут передавать только идентификатор, состоящий из трех частей, и значение калибровки мощности передатчика. Вот и все. Вы не можете передавать что-либо еще.

Даже если вы сделали пользовательское объявление Bluetooth LE, которое отправляет дополнительные данные помимо стандартных полей iBeacon, вы не сможете увидеть эти данные с помощью стандартных API для просмотра iBeacons.

Если вы хотите связать другие данные с iBeacon, вы должны сделать это через другой канал, с помощью некоторого поиска, который сопоставляет данные с указанными выше идентификаторами. Три распространенных способа сделать это:

  1. Жестко закодируйте статическую таблицу поиска в своем приложении.
  2. Используйте веб-службу для поиска значения на основе идентификаторов iBeacon.
  3. Извлекайте данные непосредственно из (нестандартного) iBeacon, используя дополнительный канал связи BluetoothLE.

В моей компании есть веб-служба под названием ProximityKit, которая упрощает привязку данных к iBeacons в вашем приложении. Вы входите в веб-интерфейс, чтобы ввести пары ключ/значение для связи с каждым iBeacon, а затем включенная клиентская библиотека iOS автоматически предоставит вам эти пары ключ/значение, когда iBeacon виден.

person davidgyoung    schedule 06.12.2013