Как запечатлеть изменение Bluetooth в разработке iOS? - PullRequest
0 голосов
/ 06 июля 2018

Можем ли мы получить уведомление в таких ситуациях? Когда iPhone iPhone включен или выключен. Когда iPhone подключается к другому устройству или отключается от него по Bluetooth.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вы можете использовать CBCentralManager и добавить методы CBCentralManagerDelegate , чтобы увидеть, когда периферийное устройство подключено / отключено.

centralManagerDidUpdateState предоставит информацию о состоянии Bluetooth вашего устройства iOS.

didConnectPeripheral и didDisconnectPeripheral могут использоваться для мониторинга подключенных устройств, когда вы подключаетесь к устройству в вашем приложении с помощью connect на вашем CentralManager (см. Пример ниже).

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

class ViewController: UIViewController, CBCentralManagerDelegate {

  var centralManager:CBCentralManager!

  override func viewDidLoad() {
    super.viewDidLoad()
    centralManager = CBCentralManager.init(delegate: self, queue: DispatchQueue.main)
  }

  func centralManagerDidUpdateState(_ central: CBCentralManager) {
    if central.state == CBManagerState.poweredOn {
      centralManager.scanForPeripherals(withServices: nil, options: nil)
    }
  }

  func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
    centralManager.connect(peripheral, options: nil)
  }

  func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
    print("peripheral \(String(describing: peripheral.name)) connected")
  }

  func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
    print("peripheral \(String(describing: peripheral.name)) disconnected")
  }
}
0 голосов
/ 06 июля 2018

Вы можете обнаружить изменение состояния включения / выключения Bluetooth, реализуя CBCentralManagerDelegate делегат CoreBluetooth.

объявить участника как @property (nonatomic, strong) CBCentralManager *bluetoothManager;

И функция как

 - (void)centralManagerDidUpdateState:(CBCentralManager *)central
    {
        NSLog(@"In status update function");
        switch(self.bluetoothManager.state)
        {
            case CBManagerStateResetting:
                _isBluetoothOn = NO;
                break;
            case CBManagerStateUnsupported:
                _isBluetoothOn = NO;
                break;
            case CBManagerStateUnauthorized:
                _isBluetoothOn = NO;
                break;
            case CBManagerStatePoweredOff:
                _isBluetoothOn = NO;
                break;
            case CBManagerStatePoweredOn:
                _isBluetoothOn = YES;
                break;
            default:
                _isBluetoothOn = NO;
                break;
        }
    }
...