iOS开发——网络编程Swift篇&(一)网络监测

网络监测

 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: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
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($0)).takeRetainedValue()
20         }
21
22         var flags: SCNetworkReachabilityFlags = 0
23         if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 {
24             return false
25         }
26
27         let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0
28         let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
29
30         return (isReachable && !needsConnection) ? true : false
31     }
32
33     class func isConnectedToNetworkOfType() -> ReachabilityType {
34
35         var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
36         zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
37         zeroAddress.sin_family = sa_family_t(AF_INET)
38
39
40
41         let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
42             SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue()
43         }
44
45         var flags: SCNetworkReachabilityFlags = 0
46         if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 {
47             return .NotConnected
48         }
49
50         let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0
51         let isWWAN = (flags & UInt32(kSCNetworkReachabilityFlagsIsWWAN)) != 0
52         //let isWifI = (flags & UInt32(kSCNetworkReachabilityFlagsReachable)) != 0
53
54         if(isReachable && isWWAN){
55             return .WWAN
56         }
57         if(isReachable && !isWWAN){
58             return .WiFi
59         }
60
61         return .NotConnected
62         //let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
63
64         //return (isReachable && !needsConnection) ? true : false
65     }

使用:

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

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

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

CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形渐现动画结合.这个组合的效果有趣,独一无二和有点迷人. 这个教程将会教你如何使用Swift和Core Animatoin来重新创建这个效果.让我们开始吧! 基础 首先下载这个教程的启动项目,然后编译和运行.过一会之后,你应该看到一个简单的image显示: 这 个启动项目已经预先在恰当的位置将view

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

CATransition动画 1 // MARK: - CATransition动画 2 3 // /* 动画样式 */ 4 // let kCATransitionFade: NSString! //翻页 5 // let kCATransitionMoveIn: NSString! //弹出 6 // let kCATransitionPush: NSString! //推出 7 // let kCATransitionReveal: NSString! //移出 8 // 9 // /*

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

UIView基本动画 1 // MARK: - UIView动画 ------------------------------------- 2 3 // MARK: - UIView动画-淡入 4 @IBAction func simpleAnimationFadeIn() 5 { 6 UIView.beginAnimations(nil, context: nil) 7 UIView.setAnimationDuration(2.0)//设置动画时间 8 testImageView.alph

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

UIView转场动画 1 // MARK: - UIView动画-过度动画 2 var redView:UIView? 3 var blueView:UIView? 4 5 // enum UIViewAnimationTransition : Int { 6 // 7 // case None 8 // case FlipFromLeft 9 // case FlipFromRight 10 // case CurlUp 11 // case CurlDown 12 // } 13 14 //

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

CAKeyframeAnimation 1 //CAKeyframeAnimation-关键针动画 2 @IBAction func cakFly() 3 { 4 let animation = CAKeyframeAnimation(keyPath: "position") 5 6 //设置5个位置点 7 let p1 = CGPointMake(0.0, 0.0) 8 let p2 = CGPointMake(320, 0.0) 9 let p3 = CGPointMake(0,

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

CABasicAnimation动画 1 //CABasicAnimation-不透明度 2 @IBAction func cabOpacity() 3 { 4 let animation = CABasicAnimation(keyPath: "opacity") 5 6 animation!.fromValue = 1.0 7 animation!.toValue = 0.0 8 animation.duration = 3.0 9 self.testImageView.layer

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

Swift 2.0和Objective-C2.0混编之第三方框架的使用 swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引入了多种新功能,使得编程工作更加简便,灵活! 2015年6月9日苹果又一次给所有开发之者带来了一个惊喜,那就是今年年底swift讲开源,者队iOS开发着来说无疑是一个值得兴奋的消息,可是就在这短短的几个月里面swift吸引了越来

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

Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 iOS 开发当中,我们会面对很多异常处理.在 Cocoa Touch 中我们使用 NSError 来进行异常处理.在新的 Swift 2.0 中,我们可以使用新的 ErrorType protocol. 在 Swift 中, enum 是最好的方法建立属于你自己的异常类型,你只要在你的 enum 中确

iOS开发——图形编程OC篇&(一)Quartz 2D介绍

Quartz 2D介绍 一.什么是Quartz2D Quartz 2D是?个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 二.Quartz2D在iOS开发中的价值 为了便于搭建美观的UI界面,iOS提供了UIKit框架,??有各种各样的UI控件 UILabel:显?文字 UIImageView:显示图片 UIButton:同时显示图片和?字

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

Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AFNetworking非常稳定,在Mac OSX与iOS中也能像其他Objective-C代码一样用Swift编写.不过Alamofire更适合Swift语言风格习惯(Alamofire与AFNetworking可以共存一个项目中,互不影响). Alamofire 取名来源于Alamo Fire fl