我需要访问环境光传感器并在iOS 11上获得运营商强度。我知道IOKit提供了这些信息,但是如何提供?
答案 0 :(得分:1)
要获得信号强度,您可以尝试此功能:
func carrierSignalStrength() -> Int? {
let statusBarView = UIApplication.shared.value(forKey: "statusBar") as! UIView
let foreground = statusBarView.value(forKey: "foregroundView") as! UIView
var signalStrengthItem: UIView?
for view in foreground.subviews {
if view.isKind(of: NSClassFromString("UIStatusBarSignalStrengthItemView")!) {
signalStrengthItem = view
break
}
}
if let strength = signalStrengthItem?.value(forKey: "signalStrengthBars") as? Int {
return strength
} else {
return nil
}
}
请注意,此函数从状态栏读取信号强度,如果隐藏则返回nil。如果您没有服务,它也将返回nil。
要阅读环境光线传感器,您可以使用this库,它可以很好地用于此目的。