什么是 Eddystone AdvertisedId?
What is the Eddystone AdvertisedId?
我正在玩 Eddystone 信标,在尝试注册时遇到了麻烦。
我购买的信标供应商提供了一个应用程序,可让您从信标读取以下数据:
Eddystone-UID:
- 命名空间:2F234454F4911BA9FFA6
- 实例 ID:1
- 在 0 米处测得的功率:-20
iBeacon/AltBeacon:
- UUID: 41f037b6-f49d-4379-8350-e209ea4eadd1
- 专业:0
- 未成年人:1
- 在 1 米处测得的功率:-61
鉴于此信息,在使用 Eddystone 注册信标时,我应该使用什么来创建我的 AdvertisedId?
谢谢!
名称空间和实例 ID 是您注册的 Google。但是您显示的命名空间标识符无效。它必须是一个 10 字节(20 个字符)的十六进制数,并且您显示的是一个包含 "V" 的 19 个字符标识符,这是十六进制数的非法字符。这是错字吗?
Google 有一个示例 Android 应用程序,可让您在其后端注册信标。可以看到调用registerBeacon
here.
的代码
实际注册过程是将JSON投递到Google的服务器,JSON代来自本项目com.google.sample.beaconservice.Beacon
classhere.
如果您查看该行,您会发现它将标识符从字节数组转换为 base 64,其中:
JSONObject advertisedId = new JSONObject()
.put("type", type)
.put("id", Utils.base64Encode(id));
因此,对于具有 0x010203040506070809 的 10 字节命名空间和 0x0a0b0c0d0e0f 的 6 字节实例的 Eddystone UID,您可以像这样对标识符进行 base 64 编码:
byte[] eddystoneBeaconId = new byte[] {(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x01a (byte) 0x0b, (byte) 0x0c, (byte) 0x0d, (byte) 0x0e, (byte) 0x0f };
String base64EncodedEddystoneBeaconId = android.util.Base64.encodeToString(id, android.util.Base64.DEFAULT);
语法为eddystone namespace id+instanceid
。
这是如何生成广告 id
:
encodeBase64(HexToBinary(eddystone namespace id+instanceid))
我正在玩 Eddystone 信标,在尝试注册时遇到了麻烦。
我购买的信标供应商提供了一个应用程序,可让您从信标读取以下数据:
Eddystone-UID:
- 命名空间:2F234454F4911BA9FFA6
- 实例 ID:1
- 在 0 米处测得的功率:-20
iBeacon/AltBeacon:
- UUID: 41f037b6-f49d-4379-8350-e209ea4eadd1
- 专业:0
- 未成年人:1
- 在 1 米处测得的功率:-61
鉴于此信息,在使用 Eddystone 注册信标时,我应该使用什么来创建我的 AdvertisedId?
谢谢!
名称空间和实例 ID 是您注册的 Google。但是您显示的命名空间标识符无效。它必须是一个 10 字节(20 个字符)的十六进制数,并且您显示的是一个包含 "V" 的 19 个字符标识符,这是十六进制数的非法字符。这是错字吗?
Google 有一个示例 Android 应用程序,可让您在其后端注册信标。可以看到调用registerBeacon
here.
实际注册过程是将JSON投递到Google的服务器,JSON代来自本项目com.google.sample.beaconservice.Beacon
classhere.
如果您查看该行,您会发现它将标识符从字节数组转换为 base 64,其中:
JSONObject advertisedId = new JSONObject()
.put("type", type)
.put("id", Utils.base64Encode(id));
因此,对于具有 0x010203040506070809 的 10 字节命名空间和 0x0a0b0c0d0e0f 的 6 字节实例的 Eddystone UID,您可以像这样对标识符进行 base 64 编码:
byte[] eddystoneBeaconId = new byte[] {(byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x01a (byte) 0x0b, (byte) 0x0c, (byte) 0x0d, (byte) 0x0e, (byte) 0x0f };
String base64EncodedEddystoneBeaconId = android.util.Base64.encodeToString(id, android.util.Base64.DEFAULT);
语法为eddystone namespace id+instanceid
。
这是如何生成广告 id
:
encodeBase64(HexToBinary(eddystone namespace id+instanceid))