ios - iOS 蓝牙 scanForPeripheralsWithServices 后台运行仅适用于某些版本?
问题描述
我有一个可以在后台进行外围扫描的工作系统。重构我的代码后,此功能已停止工作。
我以为我刚刚错过了一些东西,但奇怪的是,如果我一起运行两个版本的应用程序(重构之前/之后)(使用不同的捆绑包 id),重构的版本就可以工作。有谁知道这可能是什么原因?
相关章节:
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("did update central manager")
if central.state == .poweredOn {
print("powered on central manager")
let scanOptions = [CBCentralManagerScanOptionAllowDuplicatesKey: true]
central.scanForPeripherals(withServices: [CBUUID(nsuuid: UUID.init(uuidString: "05D27C93-F0FE-43BB-A8CB-DECFED270F8F")!)], options: scanOptions)
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print(RSSI)
DataCollector.logBluetoothData(advertisementData, RSSI)
let uuid = BluetoothModel.extractUUID(advertisementData)
bluetoothReading[uuid] = (Date().timeIntervalSince1970, Double(truncating: RSSI))
}
我觉得这可能与用户授予在后台收听的权限和开始收听之间的时间有关,但我认为基于以前版本的工作方式,情况并非如此.
解决方案
问题解决了。事实证明,如果您还使用 iBeacon 设备,您可以继续对其进行监控。
推荐阅读
- html - 错误:找不到类型为“object - Angular 7”的不同支持对象“[object Object]”
- python - 非常高的训练准确率和训练过程中的低损失,但是分类不好
- html - Chrome CSS:使用伪元素的相邻选择器不起作用
- teamcity - OctopusDeploy:创建发布步骤失败并出现错误“提要返回了意外的状态代码 '403'”
- amazon-web-services - 如何禁用在 S3 中公开存储桶
- python - 如何使用python在数据框中将列中的每个元素移动n个范围?
- filter - Google表格中带有过滤功能的公式解析错误
- java - Arraylist 中的数据重复
- oracle - Devart dotConnect for Oracle 不会与 Visual Studio 2017 安装/集成
- python - 如何加载使用纯张量流训练的 tf.keras 模型