123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- //
- // 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
|