項目中經常會遇到需要獲取當前的網絡狀態,自己就簡單的封裝了一下。
- 基于AFNetworking的網絡監測
1.import "NetworkStatus.h"
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
typedef void(^netStateBlock)(NSInteger netState);
@interface NetworkStatus : NSObject
+ (instancetype)sharedNetManager;
/**
* 網絡監測
* @param block 判斷結果回調
* @return 網絡監測
*/
+ (void)netWorkState:(netStateBlock)block;
@end
2.import "NetworkStatus.m"
#pragma mark - 網絡監測
+ (instancetype)sharedNetManager {
static dispatch_once_t once;
static NetworkStatus *sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
#pragma mark----網絡檢測
+ (void)netWorkState:(netStateBlock)block {
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[manager startMonitoring];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
if (status== 0 || status == -1) {
block(status);
}else{
block(status);
}
}];
}
3.調用
[NetworkStatus netWorkState:^(NSInteger netState) {
switch (netState) {
case 1:{
NSLog(@"手機流量上網");
}
break;
case 2:{
NSLog(@"WIFI上網");
}
break;
default:{
NSLog(@"沒網");
}
break;
}
}];
4.網絡狀態
AFNetworkReachabilityStatusUnknown = -1, //未知的網絡
AFNetworkReachabilityStatusNotReachable = 0, // 無連接
AFNetworkReachabilityStatusReachableViaWWAN = 1, //2G,3G,4G
AFNetworkReachabilityStatusReachableViaWiFi = 2, //wifi網絡