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

How to Detect Airplane Mode/ Flight Mode in IOS Swift

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

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

如果有人能解释一下我们如何以有效的方式实现它,那就太好了。

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

查看 Apple 的 Reachability classes

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

下面是另一种检测此模式的方法,

go Info.plist -> 添加这个 **Application uses Wi-Fi (Boolean) YES*

测试:关闭你的应用程序 -> 打开飞行模式 -> 打开你的应用程序:你应该能够在应用程序中看到警报。

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

除了 App Store 不安全之外,此方法还要求您的应用显示状态栏。这也很脆弱,并且在 Apple 决定更改状态栏结构时随时可能被破坏。

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