// // WHUtilsManager.m // WHChatV // // Created by 刘必果 on 2023/4/19. // #import "WHUtilsManager.h" @implementation WHUtilsManager + (void)checkNetworkStatus:(void (^)(BOOL isAlways, AFNetworkReachabilityStatus status))response{ //处理第一次安装时 网络访问问题 //1.获取网络权限 根绝权限进行人机交互 [self networkStatusDidFinishLaunching:^(BOOL isAlways, AFNetworkReachabilityStatus states) { response(isAlways, states); }]; } /* CTCellularData在iOS9之前是私有类,权限设置是iOS10开始的,所以App Store审核没有问题 获取网络权限状态 */ + (void)networkStatusDidFinishLaunching:(void (^)(BOOL isAlways, AFNetworkReachabilityStatus states))response{ //2.根据权限执行相应的交互 CTCellularData *cellularData = [[CTCellularData alloc] init]; /* 此函数会在网络权限改变时再次调用 */ cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state) { switch (state) { case kCTCellularDataRestricted: //关闭网络状态 NSLog(@"Restricted"); if(response){ response(NO, AFNetworkReachabilityStatusNotReachable); // AFNetworkReachabilityStatusNotReachable 网络不通 } break; case kCTCellularDataNotRestricted:{ // WLAN //2.2已经开启网络权限 监听网络状态 [self addReachabilityManagerDidFinishLaunching:^(BOOL isAlways, AFNetworkReachabilityStatus status) { if(response){ response(YES, status); } }]; break; } case kCTCellularDataRestrictedStateUnknown:{ if(response){ response(NO, AFNetworkReachabilityStatusUnknown); //没有授权 } NSLog(@"Unknown"); //2.3未知情况 (还没有遇到推测是有网络但是连接不正常的情况下) // [self getAppInfo]; break; } default: break; } }; } /** 实时检查当前网络状态 */ + (void)addReachabilityManagerDidFinishLaunching:(void (^)(BOOL isAlways, AFNetworkReachabilityStatus status))response{ AFNetworkReachabilityManager *afNetworkReachabilityManager = [AFNetworkReachabilityManager sharedManager]; //这个可以放在需要侦听的页面 // [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(afNetworkStatusChanged:) name:AFNetworkingReachabilityDidChangeNotification object:nil]; [afNetworkReachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusNotReachable:{ NSLog(@"网络不通:%@",@(status) ); if(response){ response(NO, AFNetworkReachabilityStatusReachableViaWiFi); } break; } case AFNetworkReachabilityStatusReachableViaWiFi:{ NSLog(@"网络通过WIFI连接:%@",@(status)); if(response){ response(YES, AFNetworkReachabilityStatusReachableViaWiFi); } break; } case AFNetworkReachabilityStatusReachableViaWWAN:{ NSLog(@"网络通过蜂窝移动:%@",@(status) ); if(response){ response(YES, AFNetworkReachabilityStatusReachableViaWWAN); } // if (self.mallConfigModel == nil) { // [self getInfo_application:application didFinishLaunchingWithOptions:launchOptions]; // } break; } default: break; } }]; [afNetworkReachabilityManager startMonitoring]; //开启网络监视器; } @end