广告数据显示 3 项服务,但只发现一项
Advertisement data shows 3 services, but there is only one discovered
我使用 CBCentralManager 连接到 BLE 外设。它与此广告数据相关联:
["kCBAdvDataLocalName": name,
"kCBAdvDataIsConnectable": 1,
"kCBAdvDataServiceUUIDs": <__NSArrayM 0x600000c74de0>(
Generic Access Profile,
Generic Attribute Profile,
1803
),
"kCBAdvDataChannel": 37]
所以我调用peripheral.discoverServices(nil)
来获得这3个服务,但是didDiscoverServices
只找到一个
[<CBService: 0x600001768040, isPrimary = NO, UUID = 1803>]
谁能解释一下为什么会这样?
您在广告中看到的三种服务中有两种是 Generic Access Profile and the Generic Attribute Profile。这些用于管理外围设备的发现以及服务和属性的发现。
核心蓝牙在您请求外设、服务和特征发现时使用这些服务。
您无法直接与他们互动,因此当您发现可用服务时,他们不会报告给您的代表。
您的外设公开的最后一个服务是 link loss 服务 (0x1803
)。此服务确实具有您的中心可以与之交互的特征,因此当您发现服务时会返回它。
我使用 CBCentralManager 连接到 BLE 外设。它与此广告数据相关联:
["kCBAdvDataLocalName": name,
"kCBAdvDataIsConnectable": 1,
"kCBAdvDataServiceUUIDs": <__NSArrayM 0x600000c74de0>(
Generic Access Profile,
Generic Attribute Profile,
1803
),
"kCBAdvDataChannel": 37]
所以我调用peripheral.discoverServices(nil)
来获得这3个服务,但是didDiscoverServices
只找到一个
[<CBService: 0x600001768040, isPrimary = NO, UUID = 1803>]
谁能解释一下为什么会这样?
您在广告中看到的三种服务中有两种是 Generic Access Profile and the Generic Attribute Profile。这些用于管理外围设备的发现以及服务和属性的发现。
核心蓝牙在您请求外设、服务和特征发现时使用这些服务。
您无法直接与他们互动,因此当您发现可用服务时,他们不会报告给您的代表。
您的外设公开的最后一个服务是 link loss 服务 (0x1803
)。此服务确实具有您的中心可以与之交互的特征,因此当您发现服务时会返回它。