IOKit可以访问各种传感器

时间:2018-02-11 04:39:07

标签: ios iphone-privateapi iokit

我需要访问环境光传感器并在iOS 11上获得运营商强度。我知道IOKit提供了这些信息,但是如何提供?

1 个答案:

答案 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库,它可以很好地用于此目的。