2

我有一个处于 iBeacon 模式的 Estimote Beacon。之前,我尝试注册 Edddystone 并且成功了。现在,我正在尝试使用 Google Proximity Beacon API 注册它。但它会发出一条错误消息,因为 Invalid AdvertisedId id 字节长度。

"error": {
    "code": 400,
    "message": "Invalid AdvertisedId id bytes length",
    "status": "INVALID_ARGUMENT"
    }

我想知道如何解析扫描记录,以便 AdvertisedId 的长度正确。如果还有其他我应该做的更改,请告诉我。

4

2 回答 2

3

您是否以 Base64 编码的原始字节字符串的形式传递 AdvertisedId?请注意AdvertisedId 的 Proximity API 文档中的这一部分:

base64 编码应该是二进制字节流,而不是任何文本(例如十六进制)表示。

以下是使用交互式 Ruby 解释器获取此类字符串的方法:

irb(main):039:0> uuid = 'B9407F30-F5F8-466E-AFF9-25556B57FE6D'
=> "B9407F30-F5F8-466E-AFF9-25556B57FE6D"
irb(main):040:0> major = 123
=> 123
irb(main):041:0> minor = 456
=> 456
irb(main):047:0> raw_bytes = [uuid.gsub('-', ''), major, minor].pack('H*SS')
=> "\xB9@\x7F0\xF5\xF8Fn\xAF\xF9%UkW\xFEm{\x00\xC8\x01"
irb(main):048:0> require 'base64'
=> true
irb(main):049:0> Base64.encode64(raw_bytes).strip
=> "uUB/MPX4Rm6v+SVVa1f+bXsAyAE="

最后一个字符串是您需要传递的。

于 2015-10-09T07:34:14.730 回答
0

检查你的 id 是否有效。advertisedId 的 id 将是直接从二进制形式编码的iBeacon UUID++的 20 字节。majorminor base64

于 2015-10-09T04:30:25.293 回答