网络监测

  1. enum ReachabilityType {
  2. case WWAN,
  3. WiFi,
  4. NotConnected
  5. }
  6.  
  7. public class Reachability {
  8.  
  9. /**
  10. :see: Original post - http://www.chrisdanielson.com/2009/07/22/iphone-network-connectivity-test-example/
  11. */
  12. class func isConnectedToNetwork() -> Bool {
  13.  
  14. var zeroAddress = sockaddr_in(sin_len: , sin_family: , sin_port: , sin_addr: in_addr(s_addr: ), sin_zero: (, , , , , , , ))
  15. zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
  16. zeroAddress.sin_family = sa_family_t(AF_INET)
  17.  
  18. let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
  19. SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($)).takeRetainedValue()
  20. }
  21.  
  22. var flags: SCNetworkReachabilityFlags =
  23. {
  24. return false
  25. }
  26.  
  27. let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) !=
  28. let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) !=
  29.  
  30. return (isReachable && !needsConnection) ? true : false
  31. }
  32.  
  33. class func isConnectedToNetworkOfType() -> ReachabilityType {
  34.  
  35. var zeroAddress = sockaddr_in(sin_len: , sin_family: , sin_port: , sin_addr: in_addr(s_addr: ), sin_zero: (, , , , , , , ))
  36. zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
  37. zeroAddress.sin_family = sa_family_t(AF_INET)
  38.  
  39. let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
  40. SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($)).takeRetainedValue()
  41. }
  42.  
  43. var flags: SCNetworkReachabilityFlags =
  44. {
  45. return .NotConnected
  46. }
  47.  
  48. let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) !=
  49. let isWWAN = (flags & UInt32(kSCNetworkReachabilityFlagsIsWWAN)) !=
  50. //let isWifI = (flags & UInt32(kSCNetworkReachabilityFlagsReachable)) != 0
  51.  
  52. if(isReachable && isWWAN){
  53. return .WWAN
  54. }
  55. if(isReachable && !isWWAN){
  56. return .WiFi
  57. }
  58.  
  59. return .NotConnected
  60. //let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
  61.  
  62. //return (isReachable && !needsConnection) ? true : false
  63. }

使用:

  1. // MARK: - 检测网络连接情况
  2. @IBOutlet var statusLabel: UILabel!
  3. @IBOutlet var typeLabel: UILabel!
  4.  
  5. @IBAction func checkButtonUpinside(sender: UIButton) {
  6.  
  7. if Reachability.isConnectedToNetwork() {
  8. statusLabel.text = "网络连接:可用"
  9. } else {
  10. statusLabel.text = "网络连接:不可用"
  11. }
  12.  
  13. let statusType = Reachability.isConnectedToNetworkOfType()
  14. switch statusType{
  15. case .WWAN:
  16. typeLabel.text = "连接类型:移动网络"
  17. case .WiFi:
  18. typeLabel.text = "连接类型:WiFi"
  19.  
  20. case .NotConnected:
  21. typeLabel.text = "连接类型:没有网络连接"
  22. }
  23. }
 
 

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. Xamarin Mono Android Ios 安装、破解(4.12)

    一.Windows下面的安装 1. 安装环境介绍: Win8.1 企业版64位.VS2013,mono-android-4.12.02001,下面的安装过程都是在VS2013已经安装成功之后的操作,本 ...

  2. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 _get_select_list_options_selected(self, locator)

    def _get_select_list_options_selected(self, locator): select = self._get_select_list(locator) # TODO ...

  3. redo文件四

    v$session_wait 用来查询redo buffer的空间信息 select sid,event,seconds_in_wait,state from v$session_wait where ...

  4. LeetCode题解——4Sum

    题目: 给定一个数组,找出其中和为0的所有4个数组合,每个组合内的4个数非递降. 解法: ①先排序,然后利用4个指针,前两个遍历,后两个在第二个指针之后的部分里夹逼,时间O(N3). ②或者利用一个哈 ...

  5. (四面体)CCPC网络赛 HDU5839 Special Tetrahedron

    CCPC网络赛 HDU5839 Special Tetrahedron 题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数 思路:枚举四面体上一条线 ...

  6. HDU-4734 F(x) 数位DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 注意到F(x)的值比较小,所以可以先预处理所有F(x)的组合个数.f[i][j]表示 i 位数时 ...

  7. [git] 更新到某个指定版本

    [git] 更新到某个指定版本 - Vanquisher - 博客频道 - CSDN.NET     [git] 更新到某个指定版本    2015-09-06 09:30 527人阅读 评论(0) ...

  8. 对"一维最大子数组和"问题的思考(homework-01)

    一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考题,在<编程之美>一书中同时阐述了一维数组和二维数组的讨论.本篇博客 ...

  9. POJ3126 Prime Path

    http://poj.org/problem?id=3126 题目大意:给两个数四位数m, n, m的位数各个位改变一位0 —— 9使得改变后的数为素数, 问经过多少次变化使其等于n 如: 10331 ...

  10. CodeForces 589I Lottery (暴力,水题)

    题意:给定 n 和 k,然后是 n 个数,表示1-k的一个值,问你修改最少的数,使得所有的1-k的数目都等于n/k. 析:水题,只要用每个数减去n/k,然后取模,加起来除以2,就ok了. 代码如下: ...