iOS开发网络篇—监测网络状态

一、说明

在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的:

(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)

(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验

  WIFI\3G网络:自动下载高清图片

  低速网络:只下载缩略图

  没有网络:只显示离线的缓存数据

苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态

https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

二、监测网络状态

Reachability的使用步骤

添加框架SystemConfiguration.framework

添加源代码

 

包含头文件

#import "Reachability.h"

代码示例:

  1. 1 #import "YYViewController.h"
  2. 2 #import "Reachability.h"
  3. 3
  4. 4 @interface YYViewController ()
  5. 5 @property (nonatomic, strong) Reachability *conn;
  6. 6 @end
  7. 7
  8. 8 @implementation YYViewController
  9. 9
  10. 10 - (void)viewDidLoad
  11. 11 {
  12. 12 [super viewDidLoad];
  13. 13
  14. 14 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
  15. 15 self.conn = [Reachability reachabilityForInternetConnection];
  16. 16 [self.conn startNotifier];
  17. 17 }
  18. 18
  19. 19 - (void)dealloc
  20. 20 {
  21. 21 [self.conn stopNotifier];
  22. 22 [[NSNotificationCenter defaultCenter] removeObserver:self];
  23. 23 }
  24. 24
  25. 25 - (void)networkStateChange
  26. 26 {
  27. 27 [self checkNetworkState];
  28. 28 }
  29. 29
  30. 30 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
  31. 31 {
  32. 32
  33. 33 }
  34. 34
  35. 35 - (void)checkNetworkState
  36. 36 {
  37. 37 // 1.检测wifi状态
  38. 38 Reachability *wifi = [Reachability reachabilityForLocalWiFi];
  39. 39
  40. 40 // 2.检测手机是否能上网络(WIFI\3G\2.5G)
  41. 41 Reachability *conn = [Reachability reachabilityForInternetConnection];
  42. 42
  43. 43 // 3.判断网络状态
  44. 44 if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
  45. 45 NSLog(@"有wifi");
  46. 46
  47. 47 } else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
  48. 48 NSLog(@"使用手机自带网络进行上网");
  49. 49
  50. 50 } else { // 没有网络
  51. 51
  52. 52 NSLog(@"没有网络");
  53. 53 }
  54. 54 }
  55. 55 @end
  56. 56
  57. 57 // 用WIFI
  58. 58 // [wifi currentReachabilityStatus] != NotReachable
  59. 59 // [conn currentReachabilityStatus] != NotReachable
  60. 60
  61. 61 // 没有用WIFI, 只用了手机网络
  62. 62 // [wifi currentReachabilityStatus] == NotReachable
  63. 63 // [conn currentReachabilityStatus] != NotReachable
  64. 64
  65. 65 // 没有网络
  66. 66 // [wifi currentReachabilityStatus] == NotReachable
  67. 67 // [conn currentReachabilityStatus] == NotReachable

OS开发网络篇—监测网络状态的更多相关文章

  1. iOS开发网络篇—监测网络状态(转)

    文章转载自:http://www.cnblogs.com/wendingding/p/3950114.html iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时 ...

  2. iOS开发网络篇—监测网络状态

    iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...

  3. iOS 开发网络篇—监测网络状态

    iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...

  4. iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  5. 02.iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  6. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  7. iOS开发网络篇—网络请求(HTTP协议)小结

    iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...

  8. iOS开发网络篇—数据缓存

      iOS开发网络篇—数据缓存 一.关于同一个URL的多次请求 有时候,对同一个URL请求多次,返回的数据可能都是一样的,比如服务器上的某张图片,无论下载多少次,返回的数据都是一样的. 上面的情况会造 ...

  9. iOS开发网络篇—大文件的多线程断点下载

    http://www.cnblogs.com/wendingding/p/3947550.html iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时 ...

随机推荐

  1. 基于python做的抓图程序1.0.00版本

    #coding=gbkimport urllibimport urllib2import reimport osimport time# import readline def getHtml(url ...

  2. [python]获取字符串类型

    >>>type(value) <class 'type'> >>>isinstance(value,type) True/False

  3. DataTable一些操作

    DataTable ReturnDt = new DataTable("Tab_Result"); ReturnDt.Columns.AddRange(new DataColumn ...

  4. Codeforces Round #204 (Div. 2): B

    很简单的一个题: 只需要将他们排一下序,然后判断一下就可以了! 代码: #include<cstdio> #include<algorithm> #define maxn 10 ...

  5. 2015 年 Ruby 大盘点

    2015 年 Ruby 圈发生了很多有趣的事,让我们跟随 Glenn Goodrich 来回顾一下 15 年 Ruby 的年度标志性事件. 2015 将要结束,这一年对于 Ruby 来说非常重要.如果 ...

  6. Lunch Time

    hdu4807:http://acm.hdu.edu.cn/showproblem.php?pid=4807 题意:给你n个点(0--n-1),点之间是有向边,0号点有k个人,现在0号点的k个人要到n ...

  7. 【UVA10972】RevolC FaeLoN (求边双联通分量)

    题意: 给你一个无向图,要求把所有无向边改成有向边,并且添加最少的有向边,使得新的有向图强联通. 分析: 这题的解法还是很好想的.先用边双联通分量缩点,然后找新图中入度为0和为1的点,入度为0则ans ...

  8. PHP日常杂记

    1.php点击按钮跳转页面 <input type="button" onclick="window.location.href='login.php'" ...

  9. Java中static作用及用法详解(转)

    1.1概述: static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存 ...

  10. PL/SQL游标使用

    游标是用来处理使用SELECT语句从数据库中检索到的多行记录的工具.借助游标的功能,数据库应用程序可以对一组记录逐个进行处理,每次处理一行. 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中 ...