通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
56 个问题
我想在 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? 总结而来
你好,
欢迎来到微软问答!
根据Gatt Server文档,有一个关于发布服务的注释,其中说:
当服务 Discoverable 且 Connectable 时,系统会将服务 Uuid 添加到播发数据包。 播发数据包中只有 31 个字节,128 位 UUID 会占用其中的 16 个字节!
因此,如果添加服务 UUID,则只剩下 15 个字节可供您可以使用。 谢谢
---如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想收到该主题的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。