Многопользовательское подключение Wi-Fi и Bluetooth выключен - PullRequest
0 голосов
/ 05 марта 2020

Есть ли способ в iOS обнаружить, отключен ли Wi-Fi и Bluetooth, чтобы я мог показать пользователю предупреждение о его включении из настроек.

Примечание: Я интересует аппаратная настройка вкл / выкл, а не inte rnet достижимо или нет.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Вы можете попробовать следующее для доступности сетевого подключения

func isInternetAvailable() -> Bool {
var isNetworkReachable = false
if let reachability: Reachability = try? Reachability() {
    isNetworkReachable = reachability.connection != .unavailable
}
return isNetworkReachable

}

для BLE

class BLEManager: NSObject, CBCentralManagerDelegate {

var bleManagerDelegate: BLEManagerDelegate?
var bluetoothManager: CBCentralManager?

private override init() {
        super.init()
    bleManager = CBCentralManager(delegate: self, queue:nil,
                                        options:[CBCentralManagerOptionShowPowerAlertKey: true])
}

//CBCentralManagerDelegate method invoked
func centralManagerDidUpdateState(_ central: CBCentralManager) {
        var bleStateError: BLEError  = .kBLEStateUnknown
            switch central.state {
         case .poweredOff:
         // powered Off
         case .poweredOn:
         // powered On
             case .unknown:
             //
         case .resetting:
             //
         case .unsupported:
         //
             case .unauthorized:
             //
    }
}

}

0 голосов
/ 05 марта 2020

// Для Wifi Используйте SwiftReachability https://github.com/ashleymills/Reachability.swift

// объявляем это свойство там, где оно не будет go вне области действия вашего слушателя

 let reachability = try! Reachability()

//declare this inside of viewWillAppear

     NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
    do{
      try reachability.startNotifier()
    }catch{
      print("could not start reachability notifier")
    }

  @objc func reachabilityChanged(note: Notification) {
   let reachability = note.object as! Reachability
     switch reachability.connection {
  case .wifi:
      print("Reachable via WiFi")
  case .cellular:
      print("Reachable via Cellular")
  case .unavailable:
    print("Network not reachable")
  }
}

прекращение уведомлений

reachability.stopNotifier()
NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)

// Для импорта через Bluetooth CoreBluetooth

 var myBTManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)

// BT Manager

func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager)
{

    if peripheral.state == .poweredOn {
   // myBTManager!.startAdvertising(_broadcastBeaconDict)
    } else if peripheral.state == .poweredOff {
   // myBTManager!.stopAdvertising()
    } else if peripheral.state == .unsupported
    {
    } else if peripheral.state == .unauthorized
      {
      }
 }
...