//
// 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. Mixed Content: The page at 'https://a.t.com/login' was loaded over HTTPS, but requested an insecure stylesheet 非全站https

    Mixed Content: The page at 'https://a.t.com/login' was loaded over HTTPS, but requested an insecure ...

  2. UA-* headers

    HTTP The Definitive Guide Request headers are headers that make sense only in a request message. The ...

  3. 设计模式之——Decorator模式

    Decorator模式又叫装饰者模式,这种模式是为了满足Java开发的"面向扩展开放,面向修改闭源"的开发原则设计出来的. 在装饰者模式中,不修改源类的代码,却能修改源类中方法的功 ...

  4. 第1章 1.7计算机网络概述--理解OSI参考模型分层思想

    OSI七层模型,知识参考理论. 分层标准的好处: 1.不同的硬件生产商生产的硬件产品,连通后就可以用了,有助于互联网发展. 2.分层,分成不同的模块,某一层的变化,不会影响其他层.如:IPv4改为IP ...

  5. shell 变量定义技巧总结

    可以多学习和模仿操作系统自带的/etc/init.d/functions函数库脚本的定义思路,多学习Linux系统脚本中的定义,有经验的读者最终应形成一套适合自己的规范和习惯. (1)变量名及变量内容 ...

  6. chm帮助文档制作及C#调用

    http://zhoufoxcn.blog.51cto.com/792419/166049 http://wenku.baidu.com/view/a90adbd249649b6648d74794.h ...

  7. java反射获得泛型参数getGenericSuperclass():获取到父类泛型的类型

    public class Person<T> { } import java.lang.reflect.ParameterizedType; import java.lang.reflec ...

  8. 分页组件vue和jsp版本

    vue版本 <template> <div class="com-vscroll"> <slot name="mcontent"& ...

  9. 企业级服务元年:iClap高效解决手游更新迭代问题

    2006年至今,手游市场经历了不少变革,从WAP站到2009年智能手机时代来临,2012大量资本涌入国内手游行业,到2014年手游市场趋于成熟,细分市场成为追逐热门,在2015年优胜劣汰的资本寒冬浪潮 ...

  10. hdu5012 圆环相交面积

    题中给了 两个同心圆, 一个大圆一个小圆,然后再给了一个大圆一个小圆也是同心圆,求这两个圆环相交的面积,用两个大圆面积减去两倍大小圆面积交加上两个小圆面积交,就ok了 这里算是坑明白了 使用acos的 ...