首页 文章

BLE iOS背景广告

提问于
浏览
1

有没有办法“强制”iOS应用程序(编码为BLE Central)继续在后台执行BLE扫描,就像它在前台运行一样?我们使用RSSI来确定接近度,应用程序必须在后台运行并处理RSSI级别 . 注意:正如您可能知道或不知道的那样,RSSI噪声非常大,需要使用尽可能多的样本进行滤波以获得准确的接近度 . 我们尝试连接然后立即将应用程序与BLE外围设备断开连接,但是使用此方法可以防止外围设备在连接到iOS应用程序时进行广告宣传 . 实际上,这限制了附近其他iOS设备所需的BLE外围设备的广告量,因此理想情况下,我们宁愿不使用此方法 . 对于那些希望权衡这个问题的人,我们可以通过BLE外设修改广告有效载荷的任何或所有部分 .

2 回答

  • 0

    您无法强制iOS应用执行违反Apple规则的操作 . 如果要继续扫描BLE设备,您的应用程序需要处于前台状态 .

    或者,您可以在后台监控BLE设备 . 每当BLE设备靠近您的设备时,您将获得一些有限的时间来扫描设备 - 也在后台 .

    let beaconRegion = CLBeaconRegion(proximityUUID: "some uuid", major: 1, minor: 1, identifier: "some identifier")
    locationManager.startMonitoring(for: beaconRegion)
    

    但是,我不知道这是否适合您的用例 .

  • 1

    您可以使用服务UUID在后台继续BLE扫描 . 您必须扫描特定服务UUID . 使用以下方法在后台扫描 .

    open func scanForPeripherals(withServices serviceUUIDs:[CBUUID] ?, options:[String:Any]?= nil)

    您需要在.plist文件中设置后台模式的另一件事 . 将“必需的后台模式”设置为“App使用CoreBluetooth进行通信” .

相关问题