从Cordova BLE Central插件上的kCBAdvDataManufacturerData中提取数据

时间:2017-06-30 11:21:13

标签: ios cordova typescript cordova-plugins ionic3

我在ionic3中使用 Cordova BLE插件。我正在尝试通过扫描kCBAdvDataManufacturerData来解析TI Sensor Tag信息,然后才真正与之联系。

当我扫描它时,我在Xcode中看到以下日志:

2017-06-30 12:51:54.308883+0200 MyApp[622:121070] Discovered {
    advertising =     {
        kCBAdvDataIsConnectable = 1;
        kCBAdvDataLocalName = "CC2650 SensorTag";
        kCBAdvDataManufacturerData =         {
            CDVType = ArrayBuffer;
            data = "DQADAAA=";
        };
        kCBAdvDataServiceUUIDs =         (
            AA80
        );
        kCBAdvDataTxPowerLevel = 0;
    };
    id = "F674D953-925E-4371-B273-3468D481E936";
    name = "CC2650 SensorTag";
    rssi = "-39";
}

kCBAdvDataManufacturerData中的数据字段似乎是base64编码的,我尝试使用以下函数对其进行解码:

private base64ToBase16(base64) {
  return window.atob(base64)
      .split('')
      .map(function (char) {
        return ('0' + char.charCodeAt(0).toString(16)).slice(-2);
      })
     .join('')
     .toUpperCase();
}

当我尝试打电话时:

console.log('stringify:', this.base64ToBase16(device.advertising.kCBAdvDataManufacturerData.data)); 

它不起作用,它报告

  

成功时出错callbackId:BLE251402365:TypeError:undefined is   不是一个对象(评估   'device.advertising.kCBAdvDataManufacturerData.data')

任何人都可以帮忙解决这个问题。此外CDVType中的kCBAdvDataManufacturerData字段代表什么,因为我只在少数设备中看到此字段,并非所有设备都有此参数。

期待听到您的建议。

0 个答案:

没有答案