0

我有一个智能门解锁硬件设备,它同时充当 iBeacon 和 CoreBluetooth 外设!

我的要求是当我的应用程序第一次启动时,应用程序将开始监控 iBeacon 区域,当用户的距离小于 10 米时,应用程序应该开始使用特定的 CBService 扫描 BLE 外围设备。

当用户进入 0.5 米距离内时,应用程序应自动连接扫描到的 CBPeripheral 设备并处理开门操作。

您可以想象它,因为当您离建筑物入口更近(约 10 米远)并开始扫描最近的蓝牙硬件时,应用程序将被激活。当您到达入口时,通过执行一些蓝牙操作,门将自动打开。

谁能帮助我如何使用 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])
}

我的蓝牙管理器收到关于

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

现在,当距离小于 0.5 米时,如何使用 iBeacon 和 Discovered Peripheral 进行映射并与 Peripheral 自动连接。

简而言之,我的手机应该用作身份验证和考勤管理的 RFID 卡

我想实现以下视频中显示的类似行为: https ://www.youtube.com/watch?v=Y6XlVE7UKp0

4

1 回答 1

1

如果您有一个 iBeacon 并且基于唯一的 Major/Minor 值,您正在搜索 BLE 外围设备,那么您将只扫描一个外围设备。因此 iBeacon 和 BLE 外围设备将匹配。

当 iBeacon 委托 didRangeBeacon 响应距离为 0.5 米时,您可以管理检测到的外围设备的数组并建立连接(Beacon Accuracy 的值以米为单位。您也可以使用它)

于 2021-01-16T06:28:28.437 回答