美文网首页
使用Alamofire 出现无法监控网络的问题记录

使用Alamofire 出现无法监控网络的问题记录

作者: z时光旅人 | 来源:发表于2017-09-14 15:43 被阅读0次

    前言

    在开发App中我们常常需要监控设备的网络状态,然后根据变化给出用户提示或者作出相应的处理以提升用户的使用体验。苹果官方提供了一个 Reachability 用户监控网络状态的变化,不过使用起来较麻烦,AFNetwork && Alamofire 其实已经给我们提供了这个功能。

    使用AFNetwork:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    
    // 当网络状态改变时调用
    
    switch (status) {
    
    case AFNetworkReachabilityStatusUnknown:
    
    NSLog(@"未知网络");
    
    break;
    
    case AFNetworkReachabilityStatusNotReachable:
    
    {
    
    NSLog(@"网络不可用");
    
    }
    
    break;
    
    case AFNetworkReachabilityStatusReachableViaWWAN:
    
    NSLog(@"手机自带网络");
    
    break;
    
    case AFNetworkReachabilityStatusReachableViaWiFi:
    
    NSLog(@"WIFI");
    
    break;
    
    }
    
    }];
    
    //开始监控
    
    [manager startMonitoring];
    
    return YES;
    
    }
    

    使用Alamofire:

    var manager: NetworkReachabilityManager?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
    //监控网络
    manager = NetworkReachabilityManager(host: "www.apple.com")
    manager?.listener={ status in
      switch status
     {
       case .notReachable:
       print("网络不可用")
       break
    
      case .unknown:
      print("未知网络")
      break
    
      case .reachable(.ethernetOrWiFi):
      print("WIFI网络")
      break
    
      case .reachable(.wwan):
      print("4G网络")
      break
     }
    }
      manager?.startListening()
      return true
    }
    

    注意:

    使用AFNetwork没有什么问题,但在使用Alamofire的时候要注意manager对象是否被销毁,因为销毁对象的时候会调用stopListening方法,停止监控,这之后即使网络状态改变,也不会进回调方法。

    deinit 
    {
       stopListening()    
    }
    
    

    相关文章

      网友评论

          本文标题:使用Alamofire 出现无法监控网络的问题记录

          本文链接:https://www.haomeiwen.com/subject/ocydsxtx.html