网络监测

 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. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  2. Android ViewPager欢迎页+引导页+进入首页

    import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences ...

  3. HDU1402 A * B Problem Plus FFT

    分析:网上别家的代码都分析的很好,我只是给我自己贴个代码,我是kuangbin的搬运工 一点想法:其实FFT就是快速求卷积罢了,当小数据的时候我们完全可以用母函数来做,比如那种硬币问题 FFT只是用来 ...

  4. PHP 正则表达式总结

    可以用字符作为一个通配符来代替除换行符(\n)之外的任一个字符.例如,正则表达式:.at可以与"cat"."sat"."#at"和" ...

  5. mybatis系列-10-一对一查询

    10.1     需求 查询订单信息,关联查询创建订单的用户信息 10.2     resultType 10.2.1      sql语句 确定查询的主表:订单表 确定查询的关联表:用户表 关联查询 ...

  6. Socket.io:有点意思

    个人网站 欢迎品尝 edwardesire.com 下面页面就是使用Socket.io制作的口袋妖怪游戏(默认小屏下已隐藏,请切换到大分辨率查看).左边是游戏画面,右边是按键表和聊天室.画面达到红蓝版 ...

  7. java 拷贝功能

    java 中的 拷贝分为浅拷贝 和 深拷贝 浅拷贝需要实现Cloneable接口,深拷贝需要实现Serializable接口. public class Square implements Clone ...

  8. Spring For Android初体验

    Spring For Android是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,这其中包括了你可以使用该项目提供的 RestTemplate来为你的Android客户 ...

  9. Java缓存学习之四:EhCache

    EhCache 关键词:纯Java的进程内缓存框架.Java分布式缓存.缓存数据有两级:内存和磁盘.缓存数据会在虚拟机重启的过程中写入磁盘.是hibernate默认的缓存provider: Ehcac ...

  10. javascript函数作用域和提前声明

    一些语言如C.java都有块级作用域,即花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的,但是javascript没有块级作用域.javascript使用函数作用域,即 ...