如何使用Swift检查iPhone是否处于飞行模式

时间:2015-02-13 14:02:07

标签: ios swift airplane

我想检查是否已激活航班模式。如果是这样,我需要显示一条警告信息。

如何使用Swift检查航班(飞机)模式是否有效?

4 个答案:

答案 0 :(得分:11)

最简单的方法是让iOS为您完成。

去Info.plist - >添加此**应用程序使用Wi-Fi(布尔值)YES *

测试:杀死你的应用 - >打开飞机模式 - >打开你的应用:你应该能够在应用程序中看到警报。 Tested on iPhone iOS9

in Xcode 7

答案 1 :(得分:0)

据我所知,你不能 - 或者你不能使用公共API。我的建议是调用所需的设备并设置相应的通知。如果你真的需要知道它的飞行模式,也许你可以通过拨打3G,GPS,Wi-Fi等来做到这一点,并检查每一个是否都关闭。

我看到了另一个建议,即使用应用内截图并检查橙色飞机(顶部是否包含橙色部分)。

两者都存在缺点,我的建议很糟糕,因为您的设备可能因其他原因而无法解决。

祝你好运。

答案 2 :(得分:0)

如果您正在使用位置服务,则应通过在日志中显示以下内容来返回错误代码1009:

Geocode error: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."

如果您检查的返回代码是-1009,则可以将用户识别为离线,并相应地进行操作。

答案 3 :(得分:0)

您不能检查飞行模式是否处于活动状态,而可以检查蜂窝信号强度,

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? = nil

for subview in foregroundViewSubviews {

    if subview.isKind(of: NSClassFromString("UIStatusBarSignalStrengthItemView")!) {
        dataNetworkItemView = subview
        break
    }
}

 if dataNetworkItemView == nil
 {
    return 0
 }
return dataNetworkItemView?.value(forKey: "signalStrengthBars") as! Int

} 

使用此方法,您可以获取信号强度并确定设备是否处于飞行模式。 在飞行模式下,它将返回0;而在网络模式下,它将返回强度。

希望这对您有帮助