Ich verwende das CoreBluetooth-Framework in meiner iOS-Anwendung zum Scannen und Verbinden mit anderen Bluetooth-Geräten. Ich bin in der Lage erfolgreich für Geräte unter Verwendung von Code zu scannen:CoreBluetooth zum Abrufen von Gerätenamen mit Swift
var centralManager: CBCentralManager?
var peripherals = [CBPeripheral]()
centralManager = CBCentralManager(delegate: self, queue: DispatchQueue.main)
Im CBCentralManagerDelegate, ich unten Code implementiert:
extension ViewController: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if (central.state == .poweredOn){
self.centralManager?.scanForPeripherals(withServices: nil, options: nil)
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if !peripherals.contains(peripheral) {
let localName = advertisementData[CBAdvertisementDataLocalNameKey]
print("\(String(describing: localName))")
peripherals.append(peripheral)
tableView.reloadData()
}
}
}
Von oben Code local immer gleich Null ist. Fehle ich irgendeinen Code?
Um weitere Informationen hinzuzufügen,
Wenn ich auf meinem Mac nach Bluetooth-Geräten scanne, kann ich die Namen der Geräte sehen. Aber wenn ich auf meinem iPhone nach Bluetooth-Geräten scanne, ist keines von ihnen aufgelistet.
quere ich geprüft und sorgte dafür, dass ich blaue Zahn auf 4 weitere Geräte mit mir (iPad 2 Android-Telefone und 1 Android TV)
Überprüfen Sie, ob 'advertisementData [CBAdvertisementDataLocalNameKey]' existiert, bevor Sie 'peripherals.append (peripheren)'. Die Sache ist, dass die Werbepakete Stück für Stück (wegen der Begrenzungsgröße) gemacht werden können, und die volle Werbung kommt später. – Larme
Danke @Larme, ich werde diesen Scheck hinzufügen. Ich habe einige andere Apps von iTunes untersucht und alle zeigen anstelle von Namen Bezeichner. Ist es nicht möglich, die Namen der Geräte in iOS abzurufen? – Satyam