//
// BWNetWorkTool.h
// IOS_0131_检测网络状态
//
// Created by ma c on 16/1/31.
// Copyright © 2016年 博文科技. All rights reserved.
// #import <Foundation/Foundation.h> @interface BWNetWorkTool : NSObject
///是否是WiFi
+ (BOOL)isEnableWiFi;
///是否是3G
+ (BOOL)isEnable3G; @end //
// BWNetWorkTool.m
// IOS_0131_检测网络状态
//
// Created by ma c on 16/1/31.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "BWNetWorkTool.h"
#import "Reachability.h" @implementation BWNetWorkTool //是否是WiFi
+ (BOOL)isEnableWiFi
{
return [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] !=NotReachable;
}
//是否是3G
+ (BOOL)isEnable3G
{
return [[Reachability reachabilityForInternetConnection] currentReachabilityStatus] !=NotReachable;
} @end
 //
// ViewController.m
// IOS_0131_检测网络状态
//
// Created by ma c on 16/1/31.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h"
#import "Reachability.h"
#import "BWNetWorkTool.h" @interface ViewController () @property (nonatomic, strong) Reachability *reachability; @end @implementation ViewController
/*
检测网络状态
1.在网络应用中,需要对用户设备的网络状态进行实时监控,目的:
a.让用户了解自己的网络状态,防止一些误会(怪应用无能)
b.根据用户的网络状态进行智能处理,节省用户流量,提高用户体验
WIFI/3G/4G网络:自动下载高清图片
低速网络:只能下载缩略图
没有网络:智能显示离线的缓存数据
c.苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 2.Reachability的使用步骤
1>添加框架SystemConfiguration.framework
2>添加源代码
3>包含头文件 - #import "Reachability.h" 3.常见用法
1>是否是WiFi
+ (BOOL)isEnableWiFi
{
return [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] !=NotReachable;
}
2>是否是3G
+ (BOOL)isEnable3G
{
return [[Reachability reachabilityForInternetConnection] currentReachabilityStatus] !=NotReachable;
}
*/ - (void)viewDidLoad {
[super viewDidLoad]; //监听网络状态发生改变通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil]; //获得Reachability对象
self.reachability = [Reachability reachabilityForInternetConnection]; //开始监控
[self.reachability startNotifier]; // //获取Reachability对象
// Reachability *wifi = [Reachability reachabilityForLocalWiFi];
// //获取Reachability对象的当前网络状态
// NetworkStatus wifiStatus = wifi.currentReachabilityStatus;
//
// if (wifiStatus !=NotReachable) {
// NSLog(@"wifi");
// } } - (void)networkStateChange
{
NSLog(@"网络状态改变了");
[self changeNetworkState];
} - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self changeNetworkState];
} - (void)changeNetworkState
{
if ([BWNetWorkTool isEnableWiFi]) {
NSLog(@"WiFi环境");
}else if ([BWNetWorkTool isEnable3G]){
NSLog(@"手机自带网络");
}else{
NSLog(@"没有网络");
}
} - (void)dealloc
{
[self.reachability stopNotifier];
[[NSNotificationCenter defaultCenter] removeObserver:self];
} @end

IOS-网络(监听网络状态)的更多相关文章

  1. iOS:Reachability网络监听

    iOS利用Reachability确认网络环境3G/WIFI 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的,一般情况下,可以把网络监 ...

  2. IOS-利用AFNetworking监听网络状态

    网络环境检测:检测用户当前所处的网络状态 效果图 1.当蜂窝和wifi同时关闭时候  显示为不可达(AFNetworkReachabilityStatusNotReachable)状态 2.打开蜂窝移 ...

  3. (原创)用Receiver和SystemService监听网络状态,注册Receiver的两种方式

    android中网络编程不可避免地要监听网络状态,wifi或者3G以及以太网,并根据当前状态做出相应决策. 在MyReceiver类中的onReceive方法中获得系统服务 ConnectivityM ...

  4. Android实时监听网络状态(2)

    在开发android应用时,涉及到要进行网络访问,时常需要进行网络状态的检查,以提供给用户必要的提醒.一般可以通过ConnectivityManager来完成该工作. ConnectivityMana ...

  5. Android实时监听网络状态

    Android实时监听网络状态(1)   其实手机在网络方面的的监听也比较重要,有时候我们必须实时监控这个程序的实时网络状态,android在网络断开与连接的时候都会发出广播,我们通过接收系统的广播就 ...

  6. Windows Phone 8 获取与监听网络连接状态(转)

    原文地址:http://www.cnblogs.com/sonic1abc/archive/2013/04/02/2995196.html 现在的只能手机对网络的依赖程度都很高,尤其是新闻.微博.音乐 ...

  7. iOS 网络监听、判断

    一 网络监听 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary ...

  8. 通过BroadCast与service时时监听网络变化

    首先需要一个service: 这里我定义了一个NetworkStateService,在这个service中我写了一个BroadcastReceiver用于监听网络状态发生改变的情况并在这个servi ...

  9. Android开发之使用广播监听网络状态变化

    我们经常需要判断网络状态的变化,如有无网络,所以需要监听网络状态的变化,比如网络断开,网络连接给予友好提示.如何监听网络状态的变化呢,最近工作中需要用到这个,于是就用广播机制来实现了网络状态的监听. ...

随机推荐

  1. RAC 性能分析 - 'log file sync' 等待事件

    简介 本文主要讨论 RAC 数据库中的'log file sync' 等待事件.RAC 数据库中的'log file sync' 等待事件要比单机数据库中的'log file sync' 等待事件复杂 ...

  2. 前端调用后端的方法(基于restful接口的mvc架构)

    1.前端调用后台: 建议用你熟悉的一门服务端程序,例如ASP,PHP,JSP,C#这些都可以,然后把需要的数据从数据库中获得,回传给客户端浏览器(其实一般就是写到HTML中,或者生成XML文件)然后在 ...

  3. [Axiom 3D]3.SceneManager场景管理器

    首先看看Axiom.Core命名空间下public abstract class SceneManager : DisposableObject A SceneManager organizes th ...

  4. hdfs HA原理

    早期的hadoop版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用.为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux ...

  5. 在windows下MySQL-python的安装

    安装MySQL-python下载文件PyMySQL-0.7.11.tar.gz 解压到任意目录 https://pypi.python.org/pypi/PyMySQL 然后在cmd命令行行下进行安装 ...

  6. poj1228 Grandpa's Estate

    地址:http://poj.org/problem?id=1228 题目: Grandpa's Estate Time Limit: 1000MS   Memory Limit: 10000K Tot ...

  7. 字王·国标二级字库汉字GB内码un码三合一对照表2016版

    国标二级字库汉字GB内码un码三合一对照表 字王2016版 汉字内码表,是制作字库的基础,简单.便利的版本很少,根据实战经验,特此制作这个三合一版本的汉字.GB内码.Unicode码对照表: l 提供 ...

  8. Linux内核分析 03

    一,构造一个简单的Linux系统MenuOS 1.Linux内核源代码简介 回顾一下前面的三大法宝和两把宝剑. arch/x86目录下的代码需要重点关注 阅读代码的时候把除了x86以外的都删掉会有利于 ...

  9. mybatis报Invalid bound statement (not found) 分析

      解决问题的步骤,请参考: 1.mapper.xml要和对应的mapper接口在同一个包下,包名要一模一样. 2.Mapper接口中的方法在Mapper.xml中没有,然后执行Mapper接口的方法 ...

  10. js urlencode

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...