Ios BLE后台扫描在swift中不工作 manager?.scanForPeripherals(带有服务:[CBUUID.init(字符串:“FE50”)],选项:[CBCentralManagerScanOptionAllowDuplicatesKey:true]) UIBackgroundModes 蓝牙中心 蓝牙外围设备

Ios BLE后台扫描在swift中不工作 manager?.scanForPeripherals(带有服务:[CBUUID.init(字符串:“FE50”)],选项:[CBCentralManagerScanOptionAllowDuplicatesKey:true]) UIBackgroundModes 蓝牙中心 蓝牙外围设备,ios,swift,bluetooth-lowenergy,Ios,Swift,Bluetooth Lowenergy,我已将后台模式打开,并在扫描期间添加了[CBUUID]服务 当我在前台时,我可以通过此服务找到设备, 但是我在后台找不到设备 应用程序需要连接到带门锁的设备。如果扫描时RSSI>-50,连接后打开门。如果RSSI

我已将后台模式打开,并在扫描期间添加了[CBUUID]服务


当我在前台时,我可以通过此服务找到设备, 但是我在后台找不到设备

应用程序需要连接到带门锁的设备。如果扫描时RSSI>-50,连接后打开门。如果RSSI<-70,请取消连接。 这种行为模式在前景中是正常的,但在背景中却不正常


请给我一些建议,我已经被困了一个星期了!我将非常感激。

我认为iOs只会在几分钟内启用您的后台模块。如果你想让时间超过一个小时,你需要找个办法。如果您想延长时间,这是一个很好的选择,但我相信我不会在商店获得批准。

我更正了我的叙述,并且在到达背景时不会扫描。您是否声明了它在AppApplicationWillResignative应该做什么?没有,我在AppApplication WillResignActive应该怎么做?allowDuplicates键在后台不起作用,因此对于给定的外设,您只会接到一个调用
didDiscover
的单一调用。我知道,但它不会在后台调用didDiscover。在应用程序移动到后台之前,您以前是否在前台发现了该外围设备?您确定该外围设备实际上正在宣传此服务吗。当你的应用程序在前台时,你是否会通过此扫描线接到
didDiscover
呼叫。当我在前台时,我可以通过此服务找到设备。
manager?.scanForPeripherals(withServices: [CBUUID.init(string: "FE50")], options: [CBCentralManagerScanOptionAllowDuplicatesKey: true])

<key>UIBackgroundModes</key>
<array>
    <string>bluetooth-central</string>
    <string>bluetooth-peripheral</string>
</array>