1、通過監(jiān)聽手機(jī)的statusbar的狀態(tài)還獲取用戶的網(wǎng)絡(luò)狀態(tài)??梢酝ㄟ^蘋果的審核在Appstore上架。
typedef NS_ENUM(NSUInteger,NetWorkStates) {
NetworkStatesNone, // 沒有網(wǎng)絡(luò)
NetworkStates2G, // 2G
NetworkStates3G, // 3G
NetworkStates4G, // 4G
NetworkStatesWIFI // WIFI
};
+ (NetWorkStates)getNetWorkState {
NSArray *subViews = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
NetWorkStates state = NetworkStatesNone;
for (id child in subViews) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
NSInteger netWorkType = [[child valueForKeyPath:@"dataNetworkType"] integerValue];
switch (netWorkType) {
case 0:
state = NetworkStatesNone;
break;
case 1:
state = NetworkStates2G;
break;
case 2:
state = NetworkStates3G;
break;
case 3:
state = NetworkStates4G;
break;
case 5:
state = NetworkStatesWIFI;
break;
default:
break;
}
}
}
return state;
}
2、通過Reachablity監(jiān)聽網(wǎng)絡(luò)狀態(tài) 對用戶設(shè)備的網(wǎng)絡(luò)狀態(tài)進(jìn)行實(shí)時監(jiān)控。
- (void)checkNetworkStates
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
_reacha = [Reachability reachabilityWithHostName:@"http://www.baidu.com"];
[_reacha startNotifier];
}
- (void)networkChange {
NetworkStatus status = [_reacha currentReachabilityStatus];
switch (status) {
case NotReachable:
break;
case ReachableViaWWAN:
break;
case ReachableViaWiFi:
break;
default:
break;
}
}
NewWorkStatus有三種狀態(tài):
typedef NS_ENUM(NSInteger, NetworkStatus) {
// Apple NetworkStatus Compatible Names.
NotReachable = 0, //沒有網(wǎng)絡(luò)
ReachableViaWiFi = 2, //wifi
ReachableViaWWAN = 1 //運(yùn)營商網(wǎng)絡(luò)
};