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

时间:2016-03-01 12:16:17

标签: ios iphone reachability

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

Thankq

2 个答案:

答案 0 :(得分:1)

设置一些逻辑,例如检查,如果网络连接到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
     }

答案 1 :(得分:0)

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

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

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