iOS编程-网络监测

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

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

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

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

  低速网络:只下载缩略图

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

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

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

二、监测网络状态

Reachability的使用步骤

添加框架SystemConfiguration.framework

添加源代码

 

包含头文件

#import "Reachability.h"

#import "QYViewController.h"

#import "Reachability.h"

@interface
QYViewController ()

@property (nonatomic,
strong) Reachability *conn;

@end

@implementation QYViewController

- (void)viewDidLoad

{

[super
viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[[NSNotificationCenter
defaultCenter] addObserver:self
selector:@selector(networkStateChange)
name:kReachabilityChangedNotification
object:nil];

self.conn = [Reachability
reachabilityForInternetConnection];

[self.conn
startNotifier];

}

- (void)dealloc

{

[self.conn
stopNotifier];

[[NSNotificationCenter
defaultCenter] removeObserver:self];

}

- (void)networkStateChange

{

[self
checkNetworkState];

}

- (void)checkNetworkState

{

// 1.检测wifi状态

Reachability *wifi = [Reachability
reachabilityForLocalWiFi];

// 2.检测手机是否能上网络(WIFI\3G\2.5G)

Reachability *conn = [Reachability
reachabilityForInternetConnection];

// 3.判断网络状态

if ([wifi
currentReachabilityStatus] != NotReachable) {
// 有wifi

NSLog(@"有wifi");

} else
if ([conn
currentReachabilityStatus] != NotReachable) {
// 没有使用wifi,
使用手机自带网络进行上网

NSLog(@"使用手机自带网络进行上网");

}
else { // 没有网络

NSLog(@"没有网络");

}

}

时间: 2025-01-14 16:19:39

iOS编程-网络监测的相关文章

iOS开发——网络编程Swift篇&(一)网络监测

网络监测 1 enum ReachabilityType { 2 case WWAN, 3 WiFi, 4 NotConnected 5 } 6 7 public class Reachability { 8 9 /** 10 :see: Original post - http://www.chrisdanielson.com/2009/07/22/iphone-network-connectivity-test-example/ 11 */ 12 class func isConnected

iOS开发网络篇—网络编程基础

iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐

ios开发 网络编程浅析(一)

iphone包含了很多框架和库,从底层的套接字到不同层次的封装,可以方便地给程序添加网络功能. (1)BSD套接字.最底层的套接字,这是Unix网络开发常用的API.如果从其他系统移植程序,而程序用的是BSD套接字,那么网络部分可以继续使用这些API. (2)CFNetwork framework .CFNetwork 也是比较底层的, 是对BSD套接字的一个扩展 .它是一个C语言的库,它是基于BSD套接字,提供了对网络协议的抽象.这些抽象使得用户更容易地操作套接字.处理网络的各种连接..它集成

(转)iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP

######################################################### 进程与线程 进程和线程都是由操作系统分配和调度的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性. 进程是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元.进程中所包含的一个或多个执行单元称为线程(thread).进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更

IOS开发——网络编程总汇

关于IOS的网络编程,大家都会想到C实现的底层BSD ,CFNetwork和NSURL之类的库,虽然如今非常多第三方库非常方便,可是作为一名开发人员,也须要了解底层代码. 以下的思维导图是关于眼下开发中用到的各种协议通讯实现.数据交互格式写成,包含比較底层的CF库实现等,也含有第三方库的介绍. 关于demo.因为服务端是java写的,大家能够网上找代码就醒了,clientdemo仍然能够找我要

iOS 网络监测

iOS网络监测,监测单个页面写在ViewController里,监测全部写在AppDelegate中,而且不用终止 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //根据主机名判断网络是否连接 self.reach = [Reachability reachabilityWithHostName:@"www.ba

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

iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大. ASI的实现基于底层的CFNetwork框架,因此运行效率很高.可惜作者早已停止更新,有一些潜在的BUG无人去解决 ASI的github地址 https://github.com/pokeb/asi-http-request ASI的使用参考 http://www.cnblogs.com/dot

iOS开发网络篇—使用ASI框架进行文件下载

原文  http://www.cnblogs.com/wendingding/p/3961681.html iOS开发网络篇—使用ASI框架进行文件下载 说明 :本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: 1 #import "YYViewController.h" 2 #import "ASIHTTPRequest.h" 3 4 @interface YYViewController () 5 6 7 @

iOS编程开发笔记1——OOP,iOS,MVC

OOP,iOS,MVC 何政达 [前言]:写这篇文章的目的是总结一下这几天学到的有关iOS编程的有关知识点.主要分三部分:OOP的设计理念:iOS的构成:MVC的具体应用. Part I :OOP 说起OOP,大家都知道是什么--面向对象程序设计(Object-OrientedProgramming).但是我们为什么要使用这样的一种设计模式来进行我们的程序设计呢?记得一开始学习编程的时候是小学六年级,当时学习的是BASIC:上了初中以后学习PASCAL语言:上了高中开始学习C语言:到了大学之后逐