Приложение 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 или в данных, специфичных для производителя.