2

我想检查飞行模式是否被激活。如果是这样,我需要显示警告消息。

如何使用 Swift 检查飞行(飞行)模式是否处于活动状态?

4

4 回答 4

13

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

去 Info.plist -> 添加这个**应用程序使用 Wi-Fi(布尔)是*

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

在 Xcode 7 中

于 2016-01-18T08:27:21.833 回答
0

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

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

两者都存在缺点,我的建议很糟糕,因为您的设备可能由于其他不相关的原因而关闭。

祝你好运。

于 2015-02-13T14:17:33.370 回答
0

如果您使用的是定位服务,它们应该通过在日志中显示以下内容返回错误代码 1009:

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

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

于 2017-04-24T06:23:35.457 回答
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,而在网络中它会返回强度。

希望对你有帮助

于 2019-03-18T11:46:17.150 回答