具有特定服务的ScanPeripherals uuid

时间:2017-05-20 16:53:24

标签: ios swift bluetooth-lowenergy

我想让我的应用可以在后台运行。 我搜索了那个,许多参考文献说我必须指定服务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

enter image description here

这是我的常规设置功能enter image description here

1 个答案:

答案 0 :(得分:1)

您无法在后台扫描nil服务 - 您必须指定您感兴趣的服务。从文档中

  

指定了蓝牙中央后台模式的应用是   允许在后台扫描。那说,他们必须   通过在中指定它们来显式扫描一个或多个服务   serviceUUIDs参数。

     

让您的应用继续接收蓝牙更新   后台,你需要添加一个UIBackgroundModes条目到你的   Info.plist并在列表中包含值bluetooth-central。

还可以尝试: -

let BEAN_SERVICE_UUID = CBUUID(string: "F0FF")