Intereting Posts
Как я могу получить 3D-звук на ios? UIView имеет сильную ссылку IOS ld: файл не найден: команда компоновщика не выполнена с кодом выхода 1 Как сделать барьер отталкивания по краю экрана? Можно ли вызвать в viewDidDisappear? Будет ли это считаться хорошей практикой программирования при использовании KVO Как использовать NSNumberFormatter для вставки пустого пространства в NSString? Вход пользователя в приложение iOS с использованием идентификатора Google Shift Swift Array Проект, обновленный с Google Картона до Google VR, запускается в Unity, но не работает при создании для iOS (XCode или Unity Cloud Build) Изменение стиля строки состояния в XCode 8.2 / Swift 3.0 (нет «Просмотр состояния панели управления на основе контроллера») Пользовательский шрифт на немецком языке в IOS 7 JQuery mobile: Как показать всплывающее окно над фиксированным нижним колонтитулом? Приложение iOS не проходит проверку isinf и isnan Модуль Swift от Realm, скомпилированный с Swift 4.0, не может быть импортирован в Swift 4.0.2

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 } 

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

К сожалению, 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 – единственный способ.