在ios上进行后台可扩展扫描
我有两个设备。。广告和扫描UUID。在前景和背景中。下面是播发代码和扫描代码 问题很简单。2台设备在后台发布广告、扫描并尝试发现对方 在前景中,两台设备都能够很好地发现对方 但是,当两台设备都位于后台时,它们不会相互发现/重新发现。苹果的文档已经表明,CBPeripheraldAllowDuplicates键在后台被忽略,因此它不会重新发现已经发现的设备 然而,通过查看stackoverflow上的其他文章,我发现如果在后台重新启动扫描,扫描会被重置 为了实现这一点,我发送了一个外部推送通知(正式接收),它在后台重新启动扫描 然而,它只在“某些情况下”产生重新发现。我已经在很多设备上进行了测试:6s、7、7 plus、8、iphoneX、ipad等以及其他多种手机 它在某些情况下有效,但在其他情况下无效。Ios版本在所有情况下都是12.3.1 这里也没有出现模式——它在一些7上有效,在一些7上无效,在一些iphone 6上有效,在一些不起作用 有人能帮助理解这里的问题吗?是什么导致了这种行为?我们如何使重新发现保持一致? 我们已经尝试过的其他事情: 1.在停止和启动扫描中设置延迟 2.记录以查看中央管理器的状态是否更改-未检测到任何更改在ios上进行后台可扩展扫描,ios,swift,bluetooth-lowenergy,Ios,Swift,Bluetooth Lowenergy,我有两个设备。。广告和扫描UUID。在前景和背景中。下面是播发代码和扫描代码 问题很简单。2台设备在后台发布广告、扫描并尝试发现对方 在前景中,两台设备都能够很好地发现对方 但是,当两台设备都位于后台时,它们不会相互发现/重新发现。苹果的文档已经表明,CBPeripheraldAllowDuplicates键在后台被忽略,因此它不会重新发现已经发现的设备 然而,通过查看stackoverflow上的其他文章,我发现如果在后台重新启动扫描,扫描会被重置 为了实现这一点,我发送了一个外部推送通知(正
let serviceUUID = CBUUID(string: "8D38A460-2F8A-4D1C-8509-324B0377AE44") let service = CBMutableService(type: serviceUUID, primary: true)
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var centralManager: CBCentralManager!
var peripheralManager: CBPeripheralManager! }
extension AppDelegate: CBPeripheralManagerDelegate {
func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager)
{
switch peripheral.state {
case .poweredOn:
os_log("advertising")
peripheralManager.add(service)
peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey: [serviceUUID]])
default:
break
}
}
}
below is scan code:
func scan() {
centralManager.stopScan()
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0)
{let scanOptions = [CBCentralManagerScanOptionAllowDuplicatesKey: true] as [String : Any]
self.centralManager.scanForPeripherals(withServices: [serviceUUID], options: scanOptions)
}
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
os_log("discover: %{public}s", peripheral.description)
}
}
我希望它在所有设备上都能一致地显示重新发现功能您是否找到了我身上存在类似问题的解决方案?谢谢