我有一个处于iBeacon模式的Estimote Beacon。以前,我尝试过注册Edddystone而且我成功了。现在,我正在尝试使用Google Proximity Beacon API进行注册。但它正在触发错误消息,因为Invalid AdvertisedId id字节长度。
"error": {
"code": 400,
"message": "Invalid AdvertisedId id bytes length",
"status": "INVALID_ARGUMENT"
}
我想知道如何解析扫描记录,以便AdvertisedId的长度是正确的。如果我还有其他任何变化,请告诉我。
答案 0 :(得分:4)
您是否以Base64编码的原始字节字符串的形式传递AdvertisedId?请注意Proximity API documentation of the AdvertisedId中的这一部分:
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="
这最后一个字符串是你需要传递的。
答案 1 :(得分:1)
检查您的ID是否有效。advertisedId的ID将是直接从二进制形式编码的iBeacon UUID
+ major
+ minor
base64
的20个字节