Advertisement类的serviceData 属性所支持的最长数据大小是多少?

Roy Li - MSFT 31,886 信誉分 Microsoft 供应商
2024-01-30T03:34:50.8433333+00:00

我想在 ble advertisement 中发送尽可能多的 serviceData,但当我设置ServiceData 时,如果数据长度超过 18 字节,结果就无法发送成功,而且也没有错误提示,让人很困惑。

我没有从微软文档中找到任何有关于 serviceData 最大长度的描述。请问是否有地方明确的标明了这个数据的长度限制?

这是我使用的代码:

auto advParameters = ref new Bluetooth::GenericAttributeProfile::GattServiceProviderAdvertisingParameters();
advParameters->IsConnectable = true;
advParameters->IsDiscoverable = true;
auto writer = ref new Windows::Storage::Streams::DataWriter();
writer->WriteString("123456789012345678"); // success
//writer->WriteString("12345678901234567890"); // fail to send out servicedata, but noting wrong occured
advParameters->ServiceData = writer->DetachBuffer();

这个问题是从 what is the max length for serviceData in Advertisement? 总结而来

通用 Windows 平台 (UWP)
通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
17 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Junjie Zhu - MSFT 15,056 信誉分 Microsoft 供应商
    2024-01-30T08:40:39.6433333+00:00

    你好,

    欢迎来到微软问答!

    根据Gatt Server文档,有一个关于发布服务的注释,其中说:

    当服务 Discoverable 且 Connectable 时,系统会将服务 Uuid 添加到播发数据包。 播发数据包中只有 31 个字节,128 位 UUID 会占用其中的 16 个字节!

    因此,如果添加服务 UUID,则只剩下 15 个字节可供您可以使用。 谢谢

    ---如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想收到该主题的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助