#ios #swift #core-bluetooth
#iOS #swift #ядро-bluetooth
Вопрос:
Я хочу просканировать все близлежащие устройства Bluetooth. Я не знаю, что я делаю неправильно в своем коде, поэтому мой метод didDiscover peripheral не вызывается. Ниже приведен мой проверенный код.
import UIKit
import CoreBluetooth
class HomeViewController: UIViewController {
var centralManager: CBCentralManager?
var peripherals = Array<CBPeripheral>()
override func viewDidLoad() {
super.viewDidLoad()
//Initialise CoreBluetooth Central Manager
centralManager = CBCentralManager(delegate: self, queue: nil)
}
}
extension HomeViewController: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if (central.state == .poweredOn){
self.centralManager?.scanForPeripherals(withServices: nil, options: nil)
}
else {
// do something like alert the user that ble is not on
let alert = UIAlertController(title: "Bluetooth is off", message: "Please turn on your bluetooth", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
print(peripheral)
}
}
Пожалуйста, помогите.
Комментарии:
1. Есть ли у вас поблизости какие-либо устройства BLE? Core Bluetooth не обнаруживает устаревшие устройства Bluetooth, такие как динамики или гарнитуры. Обнаруживает ли приложение LightBlue из App Store какие-либо периферийные устройства? Вы получаете вызов
didUpdateState
?2. У меня поблизости нет устройств BLE. У меня есть телефон Android и macbook рядом со мной. Приложение LightBlue также не обнаруживает периферийные устройства рядом со мной. Да, я получаю вызов didUpdateState.
3. Вы можете обнаруживать только устройства, которые рекламируют службы BLE GATT. Приложения на iOS не могут обнаруживать устаревшие устройства Bluetooth. Вы можете запустить приложение на своем телефоне Android или Mac для рекламы в качестве периферийного устройства, и тогда вы сможете обнаружить, что
4. Вы можете попробовать это tomsoderling.github.io/Turn-Mac-into-BLE-peripheral-device