iOS开发——网络编程Swift篇&(一)网络监测
网络监测
- 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篇&(一)网络监测的更多相关文章
- iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画
CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...
- iOS开发——动画编程Swift篇&(五)CAKeyframeAnimation
CAKeyframeAnimation //CAKeyframeAnimation-关键针动画 @IBAction func cakFly() { let animation = CAKeyframe ...
- iOS开发——动画编程Swift篇&(四)CABasicAnimation动画
CABasicAnimation动画 //CABasicAnimation-不透明度 @IBAction func cabOpacity() { let animation = CABasicAnim ...
- iOS开发——动画编程Swift篇&(三)CATransition动画
CATransition动画 // MARK: - CATransition动画 // /* 动画样式 */ // let kCATransitionFade: NSString! //翻页 // l ...
- iOS开发——动画编程Swift篇&(二)UIView转场动画
UIView转场动画 // MARK: - UIView动画-过度动画 var redView:UIView? var blueView:UIView? // enum UIViewAnimation ...
- iOS开发——动画编程Swift篇&(一)UIView基本动画
UIView基本动画 // MARK: - UIView动画 ------------------------------------- // MARK: - UIView动画-淡入 @IBActio ...
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- iOS开发——网络编程Swift篇&Alamofire详解
Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...
- iOS开发——网络编程Swift篇&(八)SwiftyJSON详解
SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...
随机推荐
- Xamarin Mono Android Ios 安装、破解(4.12)
一.Windows下面的安装 1. 安装环境介绍: Win8.1 企业版64位.VS2013,mono-android-4.12.02001,下面的安装过程都是在VS2013已经安装成功之后的操作,本 ...
- 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 ...
- redo文件四
v$session_wait 用来查询redo buffer的空间信息 select sid,event,seconds_in_wait,state from v$session_wait where ...
- LeetCode题解——4Sum
题目: 给定一个数组,找出其中和为0的所有4个数组合,每个组合内的4个数非递降. 解法: ①先排序,然后利用4个指针,前两个遍历,后两个在第二个指针之后的部分里夹逼,时间O(N3). ②或者利用一个哈 ...
- (四面体)CCPC网络赛 HDU5839 Special Tetrahedron
CCPC网络赛 HDU5839 Special Tetrahedron 题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数 思路:枚举四面体上一条线 ...
- HDU-4734 F(x) 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 注意到F(x)的值比较小,所以可以先预处理所有F(x)的组合个数.f[i][j]表示 i 位数时 ...
- [git] 更新到某个指定版本
[git] 更新到某个指定版本 - Vanquisher - 博客频道 - CSDN.NET [git] 更新到某个指定版本 2015-09-06 09:30 527人阅读 评论(0) ...
- 对"一维最大子数组和"问题的思考(homework-01)
一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考题,在<编程之美>一书中同时阐述了一维数组和二维数组的讨论.本篇博客 ...
- POJ3126 Prime Path
http://poj.org/problem?id=3126 题目大意:给两个数四位数m, n, m的位数各个位改变一位0 —— 9使得改变后的数为素数, 问经过多少次变化使其等于n 如: 10331 ...
- CodeForces 589I Lottery (暴力,水题)
题意:给定 n 和 k,然后是 n 个数,表示1-k的一个值,问你修改最少的数,使得所有的1-k的数目都等于n/k. 析:水题,只要用每个数减去n/k,然后取模,加起来除以2,就ok了. 代码如下: ...