如何使用Windows 10 BLE API发布Eddystone URL框架

本文关键字:发布 Eddystone URL 框架 API BLE 何使用 Windows | 更新日期: 2023-09-27 18:19:21

URL框架规范:https://github.com/google/eddystone/tree/master/eddystone-url

我有麻烦广告Eddystone URL框架。我正在使用以下代码,但是Eddystone信标扫描仪无法识别它。

byte[] data;
string url = "http://test.com";
var urlSchemeByte = EddystoneUrlFrame.EncodeUrlScheme(url);
var header = new byte[] { 0xAA, 0xFE, 0x10 };
using (var memoryStream = new MemoryStream())
{
    memoryStream.Write(header, 0, header.Length);
    // ranging data
    memoryStream.WriteByte(220);
    memoryStream.WriteByte((byte)urlSchemeByte);
    EddystoneUrlFrame.EncodeUrlToStream(url,EddystoneUrlFrame.UrlSchemeDictionary[(byte)urlSchemeByte].Length,memoryStream);
    data = memoryStream.ToArray();
}
var writer = new DataWriter();
writer.WriteBytes(data);
var advertisementData = new BluetoothLEAdvertisementDataSection();
advertisementData.Data = writer.DetachBuffer();
publisher.Advertisement.DataSections.Add(advertisementData);

我做错了什么?

如何使用Windows 10 BLE API发布Eddystone URL框架

Eddystone URL设计上只支持HTTPS。

http://test。Com必须是HTTPS://test。com

尝试一个url缩短器并再次测试。HTTPS://goo。gl/

尝试在标题前加上:

  1. 业务数据PDU的类型和长度:

    0x0D, 0x16
    
  2. 在前面加上16位业务通告PDU的PDU类型和长度,以及业务UUID:

    0x03, 0x03, 0xAA, 0xFE
    

应该是这样的

var header = new byte[] { 0x03, 0x03, 0xAA, 0xFE, 0x0D, 0x16, 0xAA, 0xFE, 0x10 };

我对Windows api没有经验,所以我可能错了,这些字节可能以这种方式指定。但无论如何,他们需要在传输中进行适当的检测。