尝试使用Proximity Beacon API注册Estimote iBeacon

时间:2015-10-09 04:23:51

标签: android ibeacon ibeacon-android google-beacon-platform proximityapi

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

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

我想知道如何解析扫描记录,以便AdvertisedId的长度是正确的。如果我还有其他任何变化,请告诉我。

2 个答案:

答案 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个字节