Приложение Cypress PSoC Creator / для iOS: добавьте адрес устройства BLE к рекламным данным

Я пытаюсь добавить адрес устройства BLE к рекламным данным в Cypress PSoC Creator 4.2.

Я установил соответствующий флажок в настройках GAP и собрал проект для моего устройства PSoC 4 (CYBLE-212006-01).


В моем iOS-приложении я использую следующую подпрограмму (CBCentralManager) для обнаружения периферийных устройств и печати данных рекламы:

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber){
    if peripheral.name != nil {
        if peripheral.name!.contains("TEST") {
        print(advertisementData)
        self.internalPeripheralArray.append(BluetoothPeripheral(name: peripheral.name!, UUID: peripheral.identifier, RSSI: RSSI, peripheral: peripheral, selected: false))
            self.internalPeripheralArray.sort(by: {($0.RSSI.intValue) > ($1.RSSI.intValue)})
        }
    }
}

Консоль печатает:

["kCBAdvDataLocalName": TEST, "kCBAdvDataIsConnectable": 1]

Я не могу понять, почему мой адрес устройства BLE не печатается!

КСТАТИ:

Если я добавлю какой-либо другой рекламный пакет данных, например уровень мощности передачи, он немедленно отобразится в выводе на печать.

1 ответ

Решение

Core Bluetooth не предоставляет необработанные рекламные данные вашему приложению; Вы можете получить доступ только к рекламным данным, связанным с ключами рекламы. Адрес устройства не является одним из этих ключей, в то время как уровень мощности передачи равен.

Невозможно найти адрес устройства в Core Bluetooth, если устройство не предоставляет его другим способом, например, через характеристику GATT или в данных, специфичных для производителя.

Другие вопросы по тегам