如何在WiFi开启时在iPhone中获取移动数据状态

目前我正在开发一个需要显示移动数据状态(开/关)的iPhone应用程序。 对于使用Reachability类进行网络检查,但是当任何一个网络启用时它给我正确的结果,即WiFi /移动数据,但如果两者都启用它会给出Wifi状态,但我的要求是我只需要移动数据状态也。 如果有人建议我解决这个问题会很棒。

Thankq

设置一些逻辑,如检查,如果网络连接到Wifi或蜂窝数据,然后将您的代码设置为蜂窝数据。

Reachability *reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus status = [reachability currentReachabilityStatus]; if(status == NotReachable) { //No internet } else if (status == ReachableViaWiFi) { //WiFi } else if (status == ReachableViaWWAN) { //3G // Set your code here for cellular data } 

根据您的要求,在ios-detect-3g-or-wifi上找到更多细节。

注意: – 我认为当你的iPhone与wifi连接时,它会自动提供蜂窝数据,如果断开wifi,则再次连接蜂窝数据

编辑: – 我不确定但试试这个,

 if(status == NotReachable) { //No internet } else if (status == ReachableViaWWAN) { //3G // Set your code here for cellular data if (status == ReachableViaWiFi) { //WiFi // Keep Wifi and cellulardata both on. } } else if (status == ReachableViaWiFi) { //WiFi } else if (status == ReachableViaWWAN) { // keep status only cellularadat on } 

遗憾的是,当WiFi打开时,似乎无法检查移动数据是否已打开。 您可以检测是否存在WiFi连接,是否没有WiFi连接但是移动数据连接,或者根本没有连接。 但如果有WiFi连接,似乎无法检测是否存在数据连接。

使用电话类,您可以检测设备是否具有SIM卡,并且可以检测是否已在应用程序的“设置”中禁用了移动数据。 据我所知,您无法检测是否为整个设备启用了移动数据。

您也无法区分Wifi关闭,WiFi打开但附近没有网络或选择,并且飞行模式已打开。