网址框架规范:https://github.com/google/eddystone/tree/master/eddystone-url
我在宣传Eddystone网址框架时遇到问题。我正在使用以下代码,但是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);
我做错了什么?
答案 0 :(得分:1)
Eddystone URL设计仅支持HTTPS。
http:// test。 com必须是https:// test。 COM
尝试一个url shortener并再次测试。 https:// goo。 GL /
答案 1 :(得分:0)
尝试在标题前加上包括:
服务数据PDU的PDU类型和长度:
0x0D, 0x16
在上述之前,将16位服务广告PDU的PDU类型和长度以及服务UUID:
0x03, 0x03, 0xAA, 0xFE
所以看起来应该是这样的:
var header = new byte[] { 0x03, 0x03, 0xAA, 0xFE, 0x0D, 0x16, 0xAA, 0xFE, 0x10 };
我对Windows API没有经验,所以我可能错了,这些字节可能以这种方式指定。但不知何故,他们需要在传播中进行适当的检测。