我想让我的应用可以在后台运行。 我搜索了那个,许多参考文献说我必须指定服务UUID。
当我这样做时:
centralManager.scanForPeripherals(withServices: nil, options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
我可以获得回调didDiscoverServices
。但是当我指定这样的服务时:
centralManager.scanForPeripherals(withServices: [BEAN_SERVICE_UUID], options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
它没有得到回调didDiscoverServices
。
这是我的服务UUID
let BEAN_SERVICE_UUID = CBUUID(string: "0000fff0-0000-1000-8000-00805f9b34fb")
我尝试将BEAN_SERVICE_UUID
更改为大写,"FFF0"
,"fff0"
,但它也不起作用。
我使用swift 3
编辑
这是我的info.plist
答案 0 :(得分:1)
您无法在后台扫描nil服务 - 您必须指定您感兴趣的服务。从文档中
指定了蓝牙中央后台模式的应用是 允许在后台扫描。那说,他们必须 通过在中指定它们来显式扫描一个或多个服务 serviceUUIDs参数。
让您的应用继续接收蓝牙更新 后台,你需要添加一个UIBackgroundModes条目到你的 Info.plist并在列表中包含值bluetooth-central。
还可以尝试: -
let BEAN_SERVICE_UUID = CBUUID(string: "F0FF")