Маяк зарегистрирован, но в ответе указан неверный UID
Я успешно зарегистрировал маяк с помощью Google Proximity API, но в ответе указан другой UID
URL запроса 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 в ответе не совпадает с UID в запросе POST. Кроме того, я попробовал https://proximitybeacon.googleapis.com/v1beta1/beacons?q=status:active GET и все еще вижу немного другой UID.
1 ответ
Я предполагаю, что строки, которые есть в вашем коде выше, на самом деле не то, что отправляется, потому что они вообще не должны работать.
Существует проблема, когда: если вы base64 кодируете шестнадцатеричное представление beaconID, а НЕ двоичное представление. Похоже, что сервер ошибочно принял бы это, но интерпретировать это по-другому. Это будет исправлено в ближайшее время.
Итак, вместо того, чтобы делать это:
var b64id = Base64Encode("abcdef0123456789abcdef0123456789");
Вы хотите делать:
var b64id = Base64Encode(HexToBinary("abcdef0123456789abcdef0123456789"));
Т.е.
если у вас есть шестнадцатеричная строка для идентификатора: abcdef0123456789abcdef0123456789
, убедитесь, что ваш код выдает строку base64: q83vASNFZ4mrze8BI0VniQ==
- это то, что вы должны отправить сервер в "id"
поле.
BeaconID имеет длину 16 байтов, и будет отображаться как шестнадцатеричная строка из 32 символов. Результирующая строковая кодировка base64 для этого beaconID должна быть длиной около 23-24 символов.
Надеюсь, это поможет.