MacOs BLE“不支持的描述符”

问题描述 投票:0回答:1

我正在使用 Qt 5.15.2 clang 64 位在装有 macOS Big Sur 11.1 的 Mac mini 上开发适用于 MacO 的应用程序。

我正在尝试运行心率服务器示例(链接到示例页面),但我遇到了一些问题。当我使用调试器运行应用程序时,我得到以下应用程序输出:

2021-07-22 16:22:03.774769+0200 heartrate-server[43797:13434312] [qt.bluetooth.osx] unsupported descriptor "{00002902-0000-1000-8000-00805f9b34fb}"
2021-07-22 16:22:03.775480+0200 heartrate-server[43797:13434385] [CoreBluetooth] WARNING: <CBPeripheralManager: 0x100a17a80> has no restore identifier but the delegate implements the peripheralManager:willRestoreState: method. Restoring will not be supported
2021-07-22 16:22:04.831350+0200 heartrate-server[43797:13434385] [CoreBluetooth] API MISUSE: <CBPeripheralManager: 0x100a17a80> can only accept this command while in the powered on state

我应该如何解决不支持的描述符错误?我应该怎么做才能删除“只能在开机状态下接受此命令”?我发现第二句话的问题是我提前调用了startAdvertising,我应该等待通电状态实际上已打开,但目前我没有找到等待此状态的方法。有人有想法吗?

P.s:我将“隐私 - 蓝牙始终使用说明”设置到 Info.plist 文件中。

提前致谢。

macos qt bluetooth-lowenergy
1个回答
0
投票

如果您不太熟悉蓝牙低功耗术语,本文提供了非常可靠的概述。

00002902-0000-1000-8000-00805f9b34fb
是客户端特征配置描述符 (CCCD)。它是一个特殊的描述符,允许连接方请求特定特征的通知。

您问题中的 Qt 示例将 CCCD 添加到心率测量特性第 94 行

在 Apple 平台上,Qt(大概)使用核心蓝牙框架。在 Core Bluetooth 中,您无法手动设置 CCCD 的特性。该框架抽象了这个概念并提供了更高级别的通知原语。

我不确定这是否是 QtBluetooth 的基本抽象不匹配,或者是否只是示例错误。

© www.soinside.com 2019 - 2024. All rights reserved.