我想检查飞行模式是否被激活。如果是这样,我需要显示警告消息。
如何使用 Swift 检查飞行(飞行)模式是否处于活动状态?
最简单的方法是让 iOS 为您完成。
去 Info.plist -> 添加这个**应用程序使用 Wi-Fi(布尔)是*
测试:杀死你的应用程序 -> 打开飞行模式 -> 打开你的应用程序:你应该能够在应用程序中看到警报。在 iPhone iOS9 上测试
据我所知,你不能——或者你不能使用公共 API。我的建议是调用所需的设备并设置相应的通知。如果你真的需要知道它的飞行模式,也许你可以通过调用 3G、GPS、Wi-Fi 等来检查是否每个都关闭。
我看到另一个建议是在应用内截屏并检查橙色飞机(顶部是否包含橙色部分)。
两者都存在缺点,我的建议很糟糕,因为您的设备可能由于其他不相关的原因而关闭。
祝你好运。
如果您使用的是定位服务,它们应该通过在日志中显示以下内容返回错误代码 1009:
Geocode error: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
如果您检查返回代码 -1009,您可以将用户识别为离线并相应地进行操作。
您无法检查飞行模式是否处于活动状态,而您可以检查蜂窝信号强度,
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,而在网络中它会返回强度。
希望对你有帮助