AFNetwork监听网络失效
发布日期:2022-04-05 00:52:17 浏览次数:3 分类:博客文章

本文共 2582 字,大约阅读时间需要 8 分钟。

监听网络状态大家都不陌生,尤其是使用AFNetwork监听,

我的思路是对AFNetwork进行二次封装,然后直接以属性的形式输出结果

#pragma mark - 属性/// 网络状态@property (nonatomic, assign, readonly) NetworkState state;
@interface NetworkStateTool ()@property (nonatomic, assign, readwrite) NetworkState state;@end
#pragma mark -- 开启网络监听- (void)startNetworkStateMonitoring {        AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];    //开启网络监听    [mgr startMonitoring];        [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {        switch (status) {            case AFNetworkReachabilityStatusUnknown: // 未知网络                NSLog(@"未知网络");                self.state = NetworkStateUnknown;                break;                            case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)                NSLog(@"没有网络");                self.state = NetworkStateNone;                break;                            case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络                NSLog(@"手机自带网络");                self.state = NetworkStateWWAN;                break;                            case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI                NSLog(@"WIFI");                self.state = NetworkStateWiFi;                break;        }    }];    }

按照官方的说法,我们只需要调用一次startNetworkStateMonitoring方法,

即只需要调用startMonitoring方法一次,即可在setReachabilityStatusChangeBlock中收到实时结果

实测:

WIFI--->断网 可以实时监测

但是

断网--->WIFI 无法实时监测,即setReachabilityStatusChangeBlock中收不到结果

只有重新调用setReachabilityStatusChangeBlock方法,才可以拿到实时结果

故修改代码如下:直接通过方法获取

+ (NetworkState)networkState {    NetworkState __block state;    AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];    [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {        switch (status) {            case AFNetworkReachabilityStatusUnknown: // 未知网络                NSLog(@"未知网络");                state = NetworkStateUnknown;                break;                            case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)                NSLog(@"没有网络");                state = NetworkStateNone;                break;                            case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络                NSLog(@"手机自带网络");                state = NetworkStateWWAN;                break;                            case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI                NSLog(@"WIFI");                state = NetworkStateWiFi;                break;        }    }];        //开启网络监听    [mgr startMonitoring];        return state;}

转载地址:https://www.cnblogs.com/lijianyi/p/14705812.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:iOS 蓝牙开发 Mac地址问题
下一篇:NSUInteger设为负数

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月01日 15时10分11秒