Возможно, этот вопрос дублируется, но моя ситуация отличается от других. У меня есть собственный комплект Bluetooth. Он помещает специальные данные производителя при нажатии кнопки на комплекте. Я получаю данные производителя от android. Но я не могу получить доступ из приложения ios.
Я слушаю рекламные данные, как показано ниже:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
for (key,value) in advertisementData{
print("key:\(key) value:\(value)")
}
}
И результат журнала:
key:kCBAdvDataIsConnectable value:1
key:kCBAdvDataServiceUUIDs value:(1802)
key:kCBAdvDataLocalName value: R009
Кстати, я попробовал API CoreLocation для просмотра моих устройств ble.
func startScanBeacons() {
let uuid = UUID(uuidString: "b9407f30-f5f8-466e-aff9-25556b57fe6d")!
let beaconRegion = CLBeaconRegion(proximityUUID: uuid, identifier: "mybeacon")
beaconRegion.notifyOnEntry = true
beaconRegion.notifyOnExit = true
locationManager.startMonitoring(for:beaconRegion)
locationManager.startRangingBeacons(in: beaconRegion)
}
Но это не сработало. Мое устройство не отображается как маяк. После некоторого исследования stackoverlow некоторые люди говорят: это невозможно. Вы можете посмотреть этот ответ: https://stackoverflow.com/a/46373130/3170065. Но должен быть обходной путь получения данных производителя. Что я должен сделать, чтобы преодолеть эту проблему? Мы можем настроить прошивку ble.