ios 获取网络类型

//获取网络类型

+(NSString *)getNetWorkStates{

UIApplication *app = [UIApplication
sharedApplication];

NSArray *children = [[[app
valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];

NSString *state = [[NSString
alloc]init];

int netType =
0;

//获取到网络返回码

for (id child
in children) {

if ([child
isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {

//获取到状态栏

netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];

switch (netType) {

case
0:

state = @"无网络";

//无网模式

break;

case
1:

state = @"2G";

break;

case
2:

state = @"3G";

break;

case
3:

state = @"4G";

break;

case
5:

{

state = @"WIFI";

}

break;

default:

break;

}

NSLog(@"%@",state);

}

}

//根据状态选择

return state;

}

但是这个方法有个bug,wifi‘切换到无网络的时候检测不到,希望有大神们有解决的办法告诉我

时间: 2024-08-24 09:41:38

ios 获取网络类型的相关文章

iOS获取网络类型的四种方法

Reachability类只能区分WIFI和WWAN类型,却无法区分2G网和3G网. 网上也有些方法,却都存在Bug. 经过网上查找资料和测试,基本上总结了以下几种方法: 1.使用导航栏的方式:(私有API) 代码: typedef enum { NetWorkType_None = 0, NetWorkType_WIFI, NetWorkType_2G, NetWorkType_3G, } NetWorkType; UIApplication *application = [UIApplica

Windows Phone 获取网络类型(GSM/CDMA/WIFI/Ethernet)

一.判断是否有网络数据连接: 最基本的网络状态判断,如果没有网络连接,一切操作都进行不下去啦. Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() 二.判断网络类型(GSM/CDMA/WIFI/Ethernet): 在一般的应用程序中,需要知道的网络状态也就三种:无网络.WIFI/Ethernet.手机网络. 三者的区别就是: 1."无网络":不解释,大家都懂的. 2."

Android获取网络类型

public static final String NETWORK_CLASS_UNKNOWN = "unknown"; public static final String NETWORK_CLASS_WIFI = "wifi"; public static final String NETWORK_CLASS_2_G = "2g"; public static final String NETWORK_CLASS_3_G = "3

一起学android之如何获取网络类型并判断是否可用(20)

ConnectivityManager主要管理和网络连接相关的操作,通过getSystemService(Context.CONNECTIVITY_SERVICE)获 取网络连接的服务.因此我们可以通过ConnectivityManager这个类下的getActiveNetworkInfo()方法来获取当前的网络 连接状态,这个方法返回的是NetworkInfo对象, NetworkInfo描述了当前网络Mobile和Wifi的状态.NetworkInfo类中有 三个方法:(1)getType(

Android检测网络是否可用并获取网络类型

在类中使用getSystemService的时候需要这样进行使用:1. public class JajaMenu extends Activity { public static JajaMenu instance; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); instance=this; } //获取实例 public

iOS 获取网络状态

在iOS开发者,获取网络状态比较常用 -(NSString *)getNetWorkStates{ UIApplication *app = [UIApplication sharedApplication]; NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews]; NSString *state = nil; int n

iOS获取网络时间与转换格式

[NSDate date]可以获取系统时间,但是会造成一个问题,用户可以自己修改手机系统时间,所以有时候需要用网络时间而不用系统时间.获取网络标准时间的方法: 1.先在需要的地方实现下面的代码,创建一个URL并且连接 1 NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"]; 2 NSURLRequest *request=[NSURLRequest requestWithURL:url]; 3 NSURLConnection

iOS平台网络类型检测

老大新增个需求,连接服务器时要区分内外网,需求理解了,现实很骨感啊,没办法,干. #import <Foundation/Foundation.h> /* 依赖于以下Framework SystemConfiguration CoreTelephony */ typedef enum _NetWorkType { kNetworkOff = 0, kNetworkWifi, kNetworkWLan,//如果不能获取到更详细的,将统一返回该值(iOS7以上才能获取到) kNetworkWLan

android 获取网络类型名称2G 3G 4G wifi

首先工程Manifest文件要引用: 1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> //获取网络服务 1 public static String getNetworkTypeName(Co