【发布时间】:2017-05-22 06:29:13
【问题描述】:
当我这样指定服务时:
centralManager.scanForPeripherals(withServices: [BEAN_SERVICE_UUID], options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
我确定我输入了正确的BEAN_SERVICE_UUID。事实证明,当我在前台执行该功能时,我可以获得 didDiscover 外围回调。
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print(advertisementData)
}
这是我的常规设置功能和我的info.plist
那么,我必须做什么才能使 ScanForPeripheral / didDiscover 外围设备工作?
*已编辑 经过多次测试,我发现我的应用程序可以执行后台扫描外围设备,但只是在应用程序安装后的初始启动(仅一次)之后,ScanForPeripheral / didDiscover 外围设备无法在后台工作。
【问题讨论】:
-
您可以尝试使用 centralManager.scanForPeripherals(withServices: nil) 扫描所有未指定 UUID 的设备。 CBCentralManagerScanOptionAllowDuplicatesKey 键在后台被忽略,因此您也可以跳过它进行测试。另外,也许您在控制台中有一些错误?
-
在一些搜索中,我知道如果我们想在后台和前台扫描,我们必须指定 UUID。我没有错误日志,但未发现外围设备。经过多次测试,我发现我的应用可以进行后台扫描外围设备,但只是在应用安装后的初始启动(仅一次)
-
第一次吃完午饭后,你没有忘记取消外围连接吗?
-
我没有忘记。但我的后台扫描没有任何反应
-
是否调用了 func centralManagerDidUpdateState(_ central: CBCentralManager)?你能提供你在这个方法中做了什么吗?
标签: ios swift bluetooth-lowenergy ibeacon