我如何知道我的iOS应用程序的手机访问是否被禁用?

我有一个iOS应用程序,使应用程序启动(资源更新等)一些小的networking请求。 如果用户在iOS设置中closures应用程序的手机访问,则每次启动时都会从iOS获得关于networking使用情况的提示。 有没有一种方法来程序化地知道这个应用程序的蜂窝数据已被禁用,以便我可以在启动时禁用请求?

所以我从苹果工程师的苹果开发论坛上find了这个( https://devforums.apple.com/message/1059332#1059332 )。

另一位开发人员写信给DTS,因此我有机会深入调查。 唉,这个消息和我想象的一样:没有支持的方式来检测你的应用程序是否处于这种状态。 也没有办法做一个“没有用户交互”的networking连接,也就是说,请求连接失败,而不是像这样呈现UI。 如果这些限制导致您的应用程序出现问题,我鼓励您提交描述您特定要求的错误。
https://developer.apple.com/bug-reporting/

所以它看起来像是不可能检测到您的应用程序的蜂窝数据已被closures。

编辑

我提出了这个请求的雷达,它被添加。 我刚收到通知

我们相信这个问题已经在最新的iOS 9 beta中解决了。

我查看了API差异,但到目前为止我找不到新的API。

添加到dirkgroten的答案,您可以使用Apple Reachability类,在这里find:

https://developer.apple.com/Library/ios/samplecode/Reachability/Introduction/Intro.html

它使用SCNetworkReachability ,并且使用SCNetworkReachability非常简单,它将通过Cell和WiFi检测连接,因为您需要在启动时检查两者。

有很多框架可以给你networking连接的状态,当然你也可以自己动手。 我发现AFNetworking是最好的之一。 它有一个称为AFNetworkReachabilityManager的单例类,为您抽象了一些复杂性。 具体来说,你会想看看两个布尔属性:

 reachableViaWWAN reachableViaWiFi 

还有一个你可以设置的可达性改变状态块:

 – setReachabilityStatusChangeBlock: 

AFNetworking Github

AFNetworkReachabilityManager