Почему идентификатор CBPeripheral и UUID отличаются?

У меня есть iBeacon, который знает UUID. Если я ищу этот маяк с устройства Android, я вижу именно этот UUID.

Но когда я ищу этот iBeacon с устройства iOS, его нельзя найти с этим UUID. Я нашел периферийное устройство с идентификатором, отличным от UUID.

func centralManagerDidUpdateState(_ central: CBCentralManager) {
  let serviceUUID: CBUUID = CBUUID(string: "e2c56db5-dffb-48d2-b060-d0f5a71096e0")
  central.scanForPeripherals(withServices: [serviceUUID], options: nil)
}

Почему они разные? Что я могу сделать для поиска периферийных устройств с известным UUID?


person moonvader    schedule 14.11.2016    source источник
comment
UUID службы отличается от UUID устройства. Кроме того, чистый iBeacon должен обнаруживаться только через CoreLocation. Другая информация: шансы UUID устройств в BLE (они смешаны между отметкой времени, чтением UUID и т. д.), если вы не сопряжены с ними.   -  person Larme    schedule 14.11.2016


Ответы (1)


Я подозреваю, что то, что вы «обнаружите» на Android, - это не ProximityUUID iBeacon, а другой тип UUID (например, служба GATT, как предлагает Ларме в своем комментарии). Существует много разных UUID, которые используются для разных вещей с Bluetooth. . Тот, который вам нужен для iBeacons, называется Proxmity UUID.

Вы можете попытаться увидеть UUID Proximity с помощью специального сканера маяков, такого как Найти приложение. Если вы видите маяк с этим приложением, и оно идентифицирует его как iBeacon, вы также сможете обнаружить его с помощью CoreLocation на iOS следующим образом:

let region = CLBeaconRegion(proximityUUID: UUID(uuidString: "11111111-2222-3333-4444-c0765a17c9ab")!, identifier: "myBeacons")
locationManager.delegate = this
locationManager.startRangingBeacons(in: region)

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

person davidgyoung    schedule 14.11.2016