2017-11-30 15 views
0

デバイスの無線LANの強度を取得または計算する方法をお探しですか?ステータスバーをこするの例を見てきましたが、それはiOS版11上で動作するように取得することはできません。iOS 11のSwiftでWi-Fi強度を計算したり取得する方法

func getSignalStrength() -> Int { 
    let application = UIApplication.shared 
    let statusBarView = application.value(forKey: "statusBar") as! UIView 
    let foregroundView = statusBarView.value(forKey: "foregroundView") as! UIView 
    let foregroundViewSubviews = foregroundView.subviews 

    var dataNetworkItemView:UIView! 

    for subview in foregroundViewSubviews { 
     if subview.isKind(of: NSClassFromString("UIStatusBarSignalStrengthItemView")!) { 
      dataNetworkItemView = subview 
      print("NONE") 
      break 
     } else { 
      print("NONE") 

      return 0 //NO SERVICE 
     } 
    } 

    return dataNetworkItemView.value(forKey: "signalStrengthBars") as! Int 
} 

任意の巧妙なアイデア?

はリンゴ

答えて

1

によって承認される必要はありませんあなたが持っているコードは、モバイルネットワーク(2G/3G/4Gなど)のために、ないWiFiネットワークのためです。

Swift4で以下のコードを試してみてください、それは私のiOS11上で動作します:

private func wifiStrength() -> Int? { 
    let app = UIApplication.shared 
    var rssi: Int? 
    guard let statusBar = app.value(forKey: "statusBar") as? UIView, let foregroundView = statusBar.value(forKey: "foregroundView") as? UIView else { 
     return rssi 
    } 
    for view in foregroundView.subviews { 
     if let statusBarDataNetworkItemView = NSClassFromString("UIStatusBarDataNetworkItemView"), view .isKind(of: statusBarDataNetworkItemView) { 
      if let val = view.value(forKey: "wifiStrengthRaw") as? Int { 
       //print("rssi: \(val)") 

       rssi = val 
       break 
      } 
     } 
    } 
    return rssi 
} 

どのように別のポストに私の答えをチェックし、iPhoneX上のWiFi強度を取得する:このコードは」doesnのUsing Private API To read WiFi RSSI Value

+0

iPhone XのiPhone X –

+0

での作業:https://stackoverflow.com/questions/44167577/using-private-api-to-read-wifi-rssi-value/48083845#48083845 – User9527

関連する問題