У меня есть одно аппаратное устройство для разблокировки Smart Door, которое одновременно действует как iBeacon и CoreBluetooth Peripheral!
Мое требование: когда мое приложение запускается в первый раз, приложение начнет мониторинг региона iBeacon, а когда расстояние до пользователя меньше 10 метров, приложение должно начать сканирование периферийного устройства BLE с использованием определенной службы CBService.
Когда пользователь подходит на расстояние 0,5 метра, приложение должно автоматически подключиться к отсканированному периферийному устройству CBP и обработать операцию открытия двери.
Вы можете себе представить это, поскольку приложение активируется, когда вы приближаетесь (примерно в 10 метрах) от входа в здание и начинаете сканирование ближайшего Bluetooth H / w. Когда вы подойдете ко входу, дверь откроется автоматически при выполнении операции Bluetooth.
Может ли кто-нибудь помочь мне в том, как добиться аналогичного поведения с помощью технологии CoreBluetooth?
Это приложение также должно работать в фоновом режиме.
То, что я сделал до сих пор, это запустил мониторинг региона iBeacon и получил обратный вызов в
func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) {
// I am using beacon's accuracy as distance calculation.
// When accuracy is < 10 meter, I am starting Peripheral scanning using: centralManager.scanForPeripherals(withServices: [{My Custom Service UUID}], options: [CBCentralManagerScanOptionAllowDuplicatesKey: false])
}
Мой менеджер Bluetooth получает обратный звонок о
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
}
Теперь, как я могу сопоставить с моим iBeacon и обнаруженным периферийным устройством и установить автоматическое соединение с периферийным устройством, когда расстояние составляет ‹0,5 метра.
Короче говоря, мой мобильный телефон должен работать как RFID-карта для управления аутентификацией и посещаемостью.
Я хочу добиться такого же поведения, как показано в следующем видео: https://www.youtube.com/watch?v=Y6XlVE7UKp0
connect
для периферийного устройства, то iOS либо доставит событие подключения в фоновом режиме (если ваше приложение приостановлено), либо запустит его в фоновом режиме, а затем доставит событие подключения (если ваше приложение было прервано iOS). Если приложение завершено пользователем, оно не будет перезапущено, но это выбор пользователя для завершения вашего приложения, и им не следует ожидать, что оно будет работать, если они его завершили. - person Paulw11   schedule 15.01.2021retrievePeripheralsWithIdentifier
, чтобы получитьCBPeripheral
вconnect
, поскольку каждое устройство iOS будет видеть разныеidentifier
для данного периферийный - person Paulw11   schedule 15.01.2021