不用Reachability就能够果断判断用户2G/3G的方法

看到网上不少人都在用Reachability加工的方法来判断2G/3G状态,我也小试了一把,发现存在着很多问题,常常判断出来的状态是NULL,没法准肯定位到用户是否使用的2G/3G。。 终于有一种新鲜可靠的方法出现了,不论用户是否隐藏了statusBar,均可以准确判断出用户网络状况,这个就是遍历StatusBar的图标。。。经过查看用户statusBar的网络图标的视图,而后根据视图的类型值来判断出是什么网络状态。(不过越狱的用户能够刷statusBar,没有测试过这个方法还能够不能够) 功能块的代码以下: + (NSString *)currentNetWorkStatusString {     NSString *netWorkStatus ;          UIApplication *app = [UIApplication sharedApplication];          NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];          NSNumber *dataNetworkItemView = nil;               for (id subview in subviews) {                  if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {                          dataNetworkItemView = subview;                          break;                      }              }               NSNumber * num = [dataNetworkItemView valueForKey:@"dataNetworkType"];          if (num == nil) {                           netWorkStatus = nil;                       }else{                  int n = [num intValue];                  if (n == 0) {                          netWorkStatus = nil;                      }else if (n == 1){                          netWorkStatus = @"2G";                      }else if (n == 2){                          netWorkStatus = @"3G";                      }else{                          netWorkStatus = @"WiFi";                      }              }     return netWorkStatus;      }
相关文章
相关标签/搜索