不用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;      }
相關文章
相關標籤/搜索