更新:自 iOS 8(可能是 8.3 版本)之后,即使在飞行模式下也可以打开 GPS 硬件(即您甚至可以在飞行模式下获取 GPS 位置)。这使得该问题没有意义。
--
是否可以通过编程方式确定 iPhone 是否处于飞行模式?我特别想知道它是否处于飞行模式,而不是是否有网络连接。尽管已经有很多人问过这个问题,但我看到的每一个答案都提到了 Apple 的 Reachability 代码来确定是否可用网络连接。
我正在编写一款使用 iPhone 的 GPS 的应用程序。目前,如果打开飞行模式并启动我的应用程序,我的位置管理器对象仍然存在,并且似乎仍然给我提供(缓存的?)位置。小小的 GPS 图标会出现在状态栏中,以让我知道我的应用程序正在确定位置。
我想知道手机是否处于飞行模式,以便我可以不初始化位置管理器对象,并更改我的用户界面以指示 GPS 功能不可用。
GPS 功能显然可以在无论是否有网络连接的情况下使用,因此缺乏网络连接似乎是飞行模式的一个很差的代理。当处于飞行模式时,我似乎没有收到任何特定的错误(通过 locationManager: didFailWithError),只是一个通用的错误,我认为它可能来自多个来源。
locationManager:didFailWithError:
方法中应该获得kCLErrorDenied
错误结果。我有一个特定的错误对话框来处理这种情况。如果设备处于飞行模式,则会收到通用的kCLErrorLocationUnknown
错误。 - Stewart Macdonald