3

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);

我究竟做错了什么?

4

2 回答 2

1

Eddystone URL 按设计仅支持 HTTPS。

http://测试。com 必须是 https : // 测试。com

尝试一个网址缩短器并再次测试。https://goo。升/

于 2017-06-22T20:22:37.640 回答
0

尝试在标题前添加:

  1. 服务数据 PDU 的 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 的经验,所以我可能错了以这种方式指定这些字节。但不知何故,它们需要在传输中进行正确检测。

于 2015-11-12T18:14:48.343 回答