【问题标题】:How to Detect Airplane Mode/ Flight Mode in IOS Swift如何在 IOS Swift 中检测飞行模式/飞行模式
【发布时间】:2016-08-29 18:03:51
【问题描述】:

我需要检测天气 iPhone 是否处于飞行模式,我做了很多研究,但我没有找到直接的方法来实现这一点。我的应用程序有拨打号码的功能,当Iphone有飞行模式时他不能拨打电话。

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

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

【问题讨论】:

标签: ios iphone swift location


【解决方案1】:

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

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

测试:杀死你的应用 -> 打开飞行模式 -> 打开你的应用:你应该能够在应用内看到警报。

【讨论】:

  • 当视图出现时,我可以跟踪用户按下的按钮settingsOk 吗?
  • 不,我不这么认为
【解决方案2】:

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

查看 Apple 的 Reachability classes

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

【讨论】:

【解决方案3】:

如果您没有提交到 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.")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 2018-05-22
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多