码迷,mamicode.com
首页 > 其他好文 > 详细

监测网络状态

时间:2018-03-28 15:34:47      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:mic   cas   没有   ini   frame   window   delegate   res   rtm   

在网络应用中,需要对用户设备的网络状态进行实时监控,有两种方法:

第一种:AFNetworkReachabilityManager

需要导入头文件 #import <AFNetworking.h>

+ (void)monitorNetworking {

    

    AFNetworkReachabilityManager *manage = [AFNetworkReachabilityManager sharedManager];

    

    [manage setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

      switch (status) {

          case AFNetworkReachabilityStatusUnknown: // 未知网络

          {

              NSLog(@"未知网络");

          }

              break;

          case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)

          {

              NSLog(@"没有网络(断网)");

              [MBProgressHUD showError:@"网络异常,请检查网络设置!"];

          }

              break;

          case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络

          {

              NSLog(@"手机自带网络");

          }

              break;

          case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI

          {

              NSLog(@"WIFI");

          }

              break;

      }

    }];

    // 开始监控

    [manage startMonitoring];

}

 

第二种:Reachability

 

在AppDelegate.m中

技术分享图片
 1 @property (nonatomic, strong) Reachability *reach;
 2 
 3 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 4     
 5     // 监测网络情况
 6     [[NSNotificationCenter defaultCenter] addObserver:self
 7                                              selector:@selector(reachabilityChanged:)
 8                                                  name: kReachabilityChangedNotification
 9                                                object: nil];
10     Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
11     [reach startNotifier];
12     self.reach = reach;
13 }
技术分享图片

通知触发执行的方法

技术分享图片
 1 #pragma mark - 网络状态变化通知
 2 - (void)reachabilityChanged:(NSNotification*)note {
 3     
 4     Reachability* curReach = [note object];
 5     NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
 6     NetworkStatus status = [curReach currentReachabilityStatus];
 7     
 8     /*
 9      NotReachable = 0, 无网络连接
10      ReachableViaWiFi, Wifi
11      ReachableViaWWAN 2G/3G/4G/5G
12      */
13     if (status == NotReachable) {
14        
15        // 没有网络的更多操作 
16 // 实现类似接到电话效果   self.window.frame = CGRectMake(0, 40, __width, __height-40);
17         
18     } else if (status == ReachableViaWiFi) {
19         NSLog(@"Wifi");
20     } else {
21         NSLog(@"3G/4G/5G");
22     }
23 }
技术分享图片
1 - (void)dealloc {
2     [_reach stopNotifier];
3     [[NSNotificationCenter defaultCenter] removeObserver:self];
4 }

监测网络状态

标签:mic   cas   没有   ini   frame   window   delegate   res   rtm   

原文地址:https://www.cnblogs.com/xuzb/p/8663613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!