iBeacon iOS 10: Может ли устройство сканировать и получать рекламные объявления с других периферийных устройств?

здесь совершенно новый.

Tl; dr: Может ли устройство iOS рекламировать рекламу CB (CBAdvertisementDataServiceUUIDsKey и / или CBAdvertisementDataLocalNameKey), которая может быть отсканирована другим устройством iOS?

Я считаю, что мой вопрос свежий, основываясь на устареваниях и изменениях в CoreBluetooth и CoreLocation в более поздних версиях iOS. Кроме того, на данный момент я имею в виду только операции «переднего плана».

Из того, что я прочитал и протестировал, периферийное устройство может передавать зону маяка (уникальный UUID близости, основной и второстепенный (но, в частности, без «идентификатора»)) с использованием CL. И с CB периферийное устройство также может «рекламировать» любое из двух небольших дополнительных данных: CBAdvertisementDataServiceUUIDsKey и CBAdvertisementDataLocalNameKey.

То, чего я не смог достигнуть, – это проверка устройства (например, iPhone) с использованием CB для любого из этих дополнительных ключей, а также как я упомянул необязательный «идентификатор» с использованием CL или CB.

Единственная опция для определения сканирования требует CBUUID, но неоткрытое периферийное устройство iOS не может технически рекламировать это:

central.scanForPeripherals(withServices: [CBUUID]?, options: [String : Any]?) 

Кажется, что следующее будет работать, но это не похоже, что рекламаДата включает в себя ключи выше, даже как [String: Any]:

 func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){ //code } 

Любая помощь / ответы здесь будут оценены. Благодаря!

Solutions Collecting From Web of "iBeacon iOS 10: Может ли устройство сканировать и получать рекламные объявления с других периферийных устройств?"

К сожалению, iOS здесь бесполезен. Apple блокирует CoreBluetooth несколькими способами.

Существует три основных способа отправки / получения рекламы:

IBeacon

  • Вы можете сканировать объявления iBeacon, используя CoreLocation на переднем плане и в фоновом режиме, с быстрыми ответами, но поля данных ограничены ProximityUUID, основным и второстепенным.

  • Вы можете передавать рекламу iBeacon, используя CoreBluetooth только на переднем плане.

Объявления Bluetooth LE Service

  • Вы можете передавать их на переднем плане (но не в фоновом режиме) с помощью CoreBluetooth, но вы не можете прикреплять произвольные данные. Однако вы можете отправить произвольный служебный UUID из 16 байтов.

  • Вы можете сканировать рекламные объявления с CoreBluetooth на переднем плане и в фоновом режиме и читать UUID службы с быстрыми ответами на переднем плане и медленными фоновыми ответами. Вы также можете прочитать прикрепленные данные из этих рекламных объявлений до 18 байтов, если использовать 16-разрядный UUID службы. Eddystone работает таким образом.

Объявления производителя Bluetooth LE LE

  • Вы не можете рекламировать рекламные объявления производителей вообще с помощью CoreBluetooth на iOS, за исключением специальной рекламы iBeacon, как описано выше.

  • Вы можете сканировать рекламные объявления производителя с помощью CoreBluetooth, и вы можете читать прикрепленные данные, до 23 байтов. Вы не можете обнаружить в фоновом режиме вообще, но обнаружение переднего плана происходит быстро.

Итог: если вы хотите отправить рекламные данные с одного устройства iOS другому на переднем плане или в фоновом режиме, iBeacon – единственный способ.