目前我正在开发一款需要显示移动数据状态(开/关)的iPhone应用程序。对于使用Reachability类进行网络检查,但是当任何一个网络启用时它给我正确的结果,即WiFi /移动数据,但如果两者都启用它会给出Wifi状态,但我的要求是我只需要移动数据状态也。 如果有人建议我解决这个问题会很棒。
Thankq
答案 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已打开但附近没有网络或已选择,并且飞行模式已开启。