网络监测

 enum ReachabilityType {
     case WWAN,
     WiFi,
     NotConnected
 }

 public class Reachability {

     /**
     :see: Original post - http://www.chrisdanielson.com/2009/07/22/iphone-network-connectivity-test-example/
     */
     class func isConnectedToNetwork() -> Bool {

         var zeroAddress = sockaddr_in(sin_len: , sin_family: , sin_port: , sin_addr: in_addr(s_addr: ), sin_zero: (, , , , , , , ))
         zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
         zeroAddress.sin_family = sa_family_t(AF_INET)

         let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
             SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($)).takeRetainedValue()
         }

         var flags: SCNetworkReachabilityFlags =
          {
             return false
         }

         let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) !=
         let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 

         return (isReachable && !needsConnection) ? true : false
     }

     class func isConnectedToNetworkOfType() -> ReachabilityType {

         var zeroAddress = sockaddr_in(sin_len: , sin_family: , sin_port: , sin_addr: in_addr(s_addr: ), sin_zero: (, , , , , , , ))
         zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
         zeroAddress.sin_family = sa_family_t(AF_INET)

         let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
             SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($)).takeRetainedValue()
         }

         var flags: SCNetworkReachabilityFlags =
          {
             return .NotConnected
         }

         let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) !=
         let isWWAN = (flags & UInt32(kSCNetworkReachabilityFlagsIsWWAN)) !=
         //let isWifI = (flags & UInt32(kSCNetworkReachabilityFlagsReachable)) != 0

         if(isReachable && isWWAN){
             return .WWAN
         }
         if(isReachable && !isWWAN){
             return .WiFi
         }

         return .NotConnected
         //let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0

         //return (isReachable && !needsConnection) ? true : false
     }

使用:

     // MARK: - 检测网络连接情况
     @IBOutlet var statusLabel: UILabel!
     @IBOutlet var typeLabel: UILabel!

     @IBAction func checkButtonUpinside(sender: UIButton) {

         if Reachability.isConnectedToNetwork() {
             statusLabel.text = "网络连接:可用"
         } else {
             statusLabel.text = "网络连接:不可用"
         }

         let statusType = Reachability.isConnectedToNetworkOfType()
         switch statusType{
         case .WWAN:
             typeLabel.text = "连接类型:移动网络"
         case .WiFi:
             typeLabel.text = "连接类型:WiFi"

         case .NotConnected:
             typeLabel.text = "连接类型:没有网络连接"
         }
     }
 
 

iOS开发——网络编程Swift篇&(一)网络监测的更多相关文章

  1. iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画

    CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...

  2. iOS开发——动画编程Swift篇&(五)CAKeyframeAnimation

    CAKeyframeAnimation //CAKeyframeAnimation-关键针动画 @IBAction func cakFly() { let animation = CAKeyframe ...

  3. iOS开发——动画编程Swift篇&(四)CABasicAnimation动画

    CABasicAnimation动画 //CABasicAnimation-不透明度 @IBAction func cabOpacity() { let animation = CABasicAnim ...

  4. iOS开发——动画编程Swift篇&(三)CATransition动画

    CATransition动画 // MARK: - CATransition动画 // /* 动画样式 */ // let kCATransitionFade: NSString! //翻页 // l ...

  5. iOS开发——动画编程Swift篇&(二)UIView转场动画

    UIView转场动画 // MARK: - UIView动画-过度动画 var redView:UIView? var blueView:UIView? // enum UIViewAnimation ...

  6. iOS开发——动画编程Swift篇&(一)UIView基本动画

    UIView基本动画 // MARK: - UIView动画 ------------------------------------- // MARK: - UIView动画-淡入 @IBActio ...

  7. iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用

    swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...

  8. iOS开发——新特性Swift篇&Swift 2.0 异常处理

    Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...

  9. iOS开发——网络编程Swift篇&Alamofire详解

    Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...

  10. iOS开发——网络编程Swift篇&(八)SwiftyJSON详解

    SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...

随机推荐

  1. Spring分布式事务实现

    分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持.如果使用 ...

  2. 24、AR技术

    什么是AR 在介绍增强现实(AR)之前,需要先说说虚拟现实(VR) 虚拟现实是从英文Virtual Reality 一词翻译过来的,简称VR.VR 技术是采用以计算机技术为核心的技术,生成逼真的视.听 ...

  3. Delphi RICHEDIT中插入图象

    unit InsRich;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  4. linux命令——rmdir

    rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.rm - r dir命令可代替rmdir rmdir [选项]... 目录... - p 递归删除目录dirname,当 ...

  5. web服务器分析与设计(三)

    面向对象分析与设计第二步:健壮性分析,完善对象 通过上一篇的分析,已经得到了构建系统中最重要的对象-----实体对象,它们封装着构成系统最重要的数据,实体数据是系统的生命. 但是光有实体还系统是运转不 ...

  6. web服务器分析与设计(二)

    面向对象分析与设计第二步:寻找对象,建立问题域模型 1,用例场景描述 接上一篇中的用例,编写用例场景 U1: 上网者:打开网站(www.xxx.com) 浏览器:连接网站 目标系统:接受连接 检查连接 ...

  7. 软件开发杂谈之从需求到上线---valen

    背景 IT已经成为当代企业必不可少的竞争手段,从无到有到标配,可以说以后不懂IT的就是文盲这句一点也不过,而软件开发是个复杂工程,零零碎碎各种理论工具和技巧,一言难尽. 本文意在言简意赅,简述软件开发 ...

  8. 数位DP专题

    这周开始刷数位DP,在网上找到一份神级数位DP模板,做起题目来爽歪歪. http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html in ...

  9. Uploadify 3.2使用

    我今天介绍的Uploadify 3.2的,以前旧版本的并不适用,说到这个,我就火大,我也是第一次使用,也百度了下使用手册,结果坑爹的那些手册都是旧版的,新版的Uploadify接口和旧版的差太多了.废 ...

  10. work5

    这一次写的内容是黄金豆小游戏,由于现在偏重写服务器端.对于算法层面其实涉及不多,更多偏于工程上的架构. 总而言之本次作业的服务器核心是用web.py所写,而且为了方便其他用户写客户端,架构非常简单. ...