如何在IOS Swift中检测飞行模式/飞行模式

时间:2016-05-04 10:40:08

标签: ios iphone swift location

我需要检测天气IPhone处于飞行模式或不是,我做了很多研究,我发现没有直接的方法来实现这一点。我的应用程序具有呼叫号码的功能,当Iphone具有飞机模式时,他无法呼叫。

所以我需要向他展示我的自定义屏幕以通知飞机模式已启用。

如果有人能够解释我们如何以有效的方式实现它,那将是一件好事。

3 个答案:

答案 0 :(得分:6)

以下是检测此模式的另一种方法,如下所示

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

测试:杀死你的应用 - >打开飞机模式 - >打开您的应用:您应该能够在应用内看到提醒。

enter image description here

答案 1 :(得分:1)

尝试使用SCNetworkReachabilityGetFlags(SystemConfiguration框架)。如果传回的flags变量为0且返回值为YES,则启用飞行模式。

查看Apple的Reachability classes

没有内置的api来确定飞行模式是否打开。您必须检查相应的服务是否可用,具体取决于您在应用中的需求。

答案 2 :(得分:0)

如果您不提交到App Store,则可以使用私有API检查状态栏,以查看是否存在“飞行模式”图标。这是在检查状态栏视图层次结构,以查看子视图中是否有UIStatusBarAirplaneModeItemView

除了不保证App Store安全外,此方法还要求您的应用显示状态栏。这也很脆弱,一旦Apple决定更改状态栏结构,它就可能中断。

if let statusBarSubviews = ((UIApplication.shared.value(forKey: "statusBar") as? UIView)?.value(forKey: "foregroundView") as? UIView)?.subviews,
    statusBarSubviews.contains(where: { $0.classForCoder == NSClassFromString("UIStatusBarAirplaneModeItemView") }) {
        print("Airplane mode is on.")
}