AFNetworkReachabilityManager 网络回

2021-11-05  本文已影响0人  守护地中海的花

某些界面当网络异常时候需要修改UI 所以网络回调显得很重要了

小bug:

总结:所以还是自己写一个网络监听类吧 (要么写在AppDelegate、TabbarController这样不会被销毁的地方吧,所以我写个单例吧)且网络请求以通知形式发布 避免block覆盖 保证AFNetworkReachabilityManager 回调程序当中 也仅有一个地方

完整代码

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
#define kNotificationName_NetWorkChanged  @"notificationName_NetWorkChanged"

@interface AppNetworkMonitorManager : NSObject
/// 单例创建对象
+ (instancetype)sharedInstance;

/// 有网YES, 无网:NO
- (BOOL)isNetwork;

/// 手机网络:YES, 反之:NO
- (BOOL)isWWANNetwork;

/// WiFi网络:YES, 反之:NO
- (BOOL)isWiFiNetwork;

@end

NS_ASSUME_NONNULL_END

#import "AppNetworkMonitorManager.h"
#import <AFNetworking.h>
@interface AppNetworkMonitorManager ()

@end

@implementation AppNetworkMonitorManager
static AppNetworkMonitorManager *instance;
+ (instancetype)sharedInstance {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc]init];
        AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
        //[manager startMonitoring];
        [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusUnknown:
                {
                    NSLog(@"未知网络");
                }
                    break;
                case AFNetworkReachabilityStatusNotReachable:
                {
                    NSLog(@"无网络");
                }
                    break;
                case AFNetworkReachabilityStatusReachableViaWWAN:
                {
                    NSLog(@"手机自带网络");
                }
                    break;
                case AFNetworkReachabilityStatusReachableViaWiFi:
                {
                    NSLog(@"WIFI");
                }
                    break;
                default:
                    break;
            }
            [[NSNotificationCenter defaultCenter]postNotificationName:kNotificationName_NetWorkChanged object:@"1" userInfo:@{@"name":@"wpp"}];
        }];
    });
    return instance;
}
- (BOOL)isNetwork {
    return [AFNetworkReachabilityManager sharedManager].reachable;
}

- (BOOL)isWWANNetwork {
    return [AFNetworkReachabilityManager sharedManager].reachableViaWWAN;
}

- (BOOL)isWiFiNetwork {
    return [AFNetworkReachabilityManager sharedManager].reachableViaWiFi;
}
@end

上一篇下一篇

猜你喜欢

热点阅读