检测网络状态

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

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

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

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

低速网络:只下载缩略图

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

1.使用AFNetworking框架

- (void)afnMonitoring {
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"------当前网络状态%zd",status);
    }];

    [manager startMonitoring];
}
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
    AFNetworkReachabilityStatusUnknown          = -1,//未知网络
    AFNetworkReachabilityStatusNotReachable     = 0,//没有网络
    AFNetworkReachabilityStatusReachableViaWWAN = 1,//蜂窝网络
    AFNetworkReachabilityStatusReachableViaWiFi = 2,//WiFi网络
}

2.使用苹果官方的Reachability

下载地址:

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

- (void)getNetworkStatus {
    if([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
        NSLog(@"是WiFi网络");
    }else if([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
        NSLog(@"是蜂窝网络");
    }else {
        NSLog(@"网络故障");
    }
}

长期监控网络的状态

- (void)applyMonitoring {
    //监听通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];

    //开始监控网络
    self.reachability = [Reachability reachabilityForInternetConnection];
    [self.reachability startNotifier];
}

取消任务

- (void)dealloc
{
    [self.netReachability stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
}
时间: 2024-10-13 21:33:05

检测网络状态的相关文章

[iOS 多线程 & 网络 - 2.8] - 检测网络状态

A.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的:(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态https://developer.apple.com/library/ios/samplecode/Reachability

iOS 检测网络状态

1.为什么要检测网络状态? 1.1 让用户知道自己的网络状态,防止用户埋怨"这个应用太垃圾,获取数据那么慢" 1.2 根据用户的网络状态,智能处理,提升用户体验 例如某些手机浏览器,检测到用户网络是2G/3G时,会自动切换为无图模式 2.手动触发 2.1 首先下载苹果的示例程序Reachability, 取得示例程序里的Reachability.h和Reachability.m, 添加到自己项目里 代码如下 - (void)touchesBegan:(NSSet *)touches w

网络编程练习 -- 检测网络状态

LWTViewController.m // // LWTViewController.m // 网络编程练习 -- 检测网络状态 // // Created by apple on 14-7-2. // Copyright (c) 2014年 lwt. All rights reserved. // #import "LWTViewController.h" #import "Reachability.h" @interface LWTViewController

数据安全(MD5),HTTPS,检测网络状态

一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登录密码银行账号… … 2.数据安全仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 常见的加密算法MD5 \ SHA \ DES \

iOS开发 - 检测网络状态(WIFI、2G/3G/4G)

检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是 让用户了解自己的网络状态,防止一些误会(比如怪应用无能) 根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态 https://developer.apple.com/library/ios/samplecode/Reachability/Rea

iOS网络-AFNetworking检测网络状态

可以使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的改变,也可以利用苹果提供的Reachability来监听.建议在开发中直接使用AFN框架处理. 示例代码如下: -(void)afn { //1.创建网络状态监测管理者 AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager]; //2.监听改变 [manger setReachabilityS

IOS网络——检测网络状态:Reachability

1.iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用.大多数的iOS应用都需要联网,甚至有些应用严重依赖网络,没有网络就无法正常工作. 2.在你的应用尝试通过网络获取数据之前,你需要知道当前设备是否知道连接上了网络,甚至有时候你可能还需要知道当前网路是由wifi还是由移动蜂窝网络提供的. 3.“在网络访问失败的时候,应用没有做出适当的提示”是苹果的iOS审核团队拒绝一个应用的常见理由.苹果要求你必须先检测网络连接状态,当网络不可用的时候以某种方式告知用户

Reachability检测网络状态

在现在的项目开发当中,监测网络是否正常非常有必要的.Reachability检测网络可以检测WiFi 3G 无线局域网 使用Reachability 下载Reachability,将Reachability添加到项目当中,在要检测网的类当中添加 #import <Reachability.h> //  开启网络状态的监听 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(reachabilityCh

Reachability 检测网络状态

-(void)viewWillAppear:(BOOL)animated { [IOSExcept JudgeNetwork];//联网 NSLog(@"检查网络 请稍后....."); self.backImage.hidden = YES;//隐藏背景图片 if (IOS.isDayMode == 1) { [self.backImage setImage:[UIImage imageNamed:@"back_day"]]; } else { [self.bac