0

我使用Google Proximity API成功注册了一个信标,但响应显示不同的 UID

请求网址 https://proximitybeacon.googleapis.com/v1beta1/beacons:register

要求

{
    "advertisedId": {
        "type": "EDDYSTONE",
        "id": "0x2f234454f4911ba9ffb6"
    },
    "status": "ACTIVE",
    "latLng": {
        "latitude": 51.4935657,
        "longitude": -0.1465538
    }
}

回复

{
  "beaconName": "beacons/3!d31d9fdb7e38e787f8f75d5b6bd7df6f",
  "advertisedId": {
    "type": "EDDYSTONE",
    "id": "0x2f234454f4911ba9ffbw=="
  },
  "status": "ACTIVE",
  "latLng": {
    "latitude": 51.4935657,
    "longitude": -0.14655379999999998
  }
}

如果您仔细观察,响应中的 UID 与 POST 请求中的 UID 不匹配。另外,我尝试了https://proximitybeacon.googleapis.com/v1beta1/beacons?q=status:active GET,但我仍然看到 UID 略有不同。

4

1 回答 1

1

我假设您在上面的代码中拥有的字符串实际上并不是正在发送的内容,因为它们根本不应该工作。

存在以下问题:如果您对 beaconID 的十六进制表示形式进行 base64 编码,而不是二进制表示形式。看起来服务器会错误地接受这一点,但会以不同的方式解释它。这将很快得到解决。

所以,而不是这样做:

var b64id = Base64Encode("abcdef0123456789abcdef0123456789");

你想做:

var b64id = Base64Encode(HexToBinary("abcdef0123456789abcdef0123456789"));

IE

如果您有 id: 的十六进制字符串,abcdef0123456789abcdef0123456789请确保您的代码生成 base64 字符串:q83vASNFZ4mrze8BI0VniQ==- 这就是您应该在该"id"字段中发送服务器的内容。

BeaconID 长 16 个字节,将显示为 32 个字符的十六进制字符串。生成的 base64 字符串编码该 beaconID 的长度应约为 23-24 个字符。

希望有帮助。

于 2015-08-21T10:48:15.620 回答