- 最近做一个项目要频繁的进行网络操作,但有时需要判定网络状态和当前网络的类型。看到好多前辈都是使用
reachability来实现的。我也试了试效果还不错,封装成了工具类方便大家使用。使用说明:
1.添加framework:
将SystemConfiguration.framework添加进工程。
2.下载https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
复制里面的Reachability.h和Reachability.m到项目中
3.添加CloNetworkUtil.h和CloNetworkUitl.m到你的项目中
在使用的地方导入CloNetworkUtil.h头文件即可
CloNetworkUtil.h代码:
01.
//
02.
// CloNetworkUtil.h
03.
// NetWorkTest
04.
//
05.
// Created by Cloay on 12-6-19.
06.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
07.
/**
08.
1.添加framework:
09.
将SystemConfiguration.framework 添加进工程。
10.
2.下载 https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
11.
复制里面的Reachability.h和Reachability.m到项目中
12.
*/
13.
14.
#
import
<Foundation/Foundation.h>
15.
#
import
"Reachability.h"
16.
@interface
CloNetworkUtil : NSObject{
17.
}
18.
19.
20.
- (Reachability *)initReachability;
21.
- (BOOL)getNetWorkStatus;
22.
- (NSString *)getNetWorkType;
23.
@end
实现如下:
01.
//
02.
// CloNetworkUtil.m
03.
// NetWorkTest
04.
//
05.
// Created by Cloay on 12-6-19.
06.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
07.
//
08.
09.
#
import
"CloNetworkUtil.h"
10.
11.
@implementation
CloNetworkUtil
12.
13.
//初始化reachability
14.
- (Reachability *)initReachability{
15.
Reachability *reachability = [Reachability reachabilityWithHostName:@
"www.baidu.com"
];
16.
return
reachability;
17.
}
18.
19.
//判断网络是否可用
20.
- (BOOL)getNetWorkStatus{
21.
if
([[self initReachability] currentReachabilityStatus] == NotReachable) {
22.
return
NO;
23.
}
else
{
24.
return
YES;
25.
}
26.
}
27.
28.
/**
29.
获取网络类型
30.
return
31.
*/
32.
- (NSString *)getNetWorkType
33.
{
34.
NSString *netWorkType;
35.
Reachability *reachability = [self initReachability];
36.
switch
([reachability currentReachabilityStatus]) {
37.
case
ReachableViaWiFi:
//Wifi网络
38.
netWorkType = @
"wifi"
;
39.
break
;
40.
case
ReachableViaWWAN:
//无线广域网
41.
netWorkType = @
"wwan"
;
42.
break
;
43.
default
:
44.
netWorkType = @
"no"
;
45.
break
;
46.
}
47.
return
netWorkType;
48.
}
49.
50.
@end
很简单就不在说明了!效果图:
有问题请留言,大家一起交流学习!
iOS开发网络篇—网络检查
时间: 2024-10-13 03:05:58
iOS开发网络篇—网络检查的相关文章
iOS开发网络篇—网络编程基础
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐
iOS开发项目篇—35封装网络请求
iOS开发项目篇—35封装网络请求 一.简单说明 1.分析项目对网路请求(AFN框架)的依赖 项目中,多个控制器都使用了AFN框架发送网络请求,如果AFN2.0存在重大BUg,或者是升级至3.0版本,那么对于整个项目都是及其危险的,所有用到AFN的地方都需要做出相应的修改. 另外,如果现在要求不再使用AFN框架,而是使用一个新的框架,那么有关AFN的依赖所关联的所有代码都需要重新来过. 如果把afn这个第三方框架从项目中删除的话,那么项目就相当于作废了,这就是项目对第三方框架的强依赖的体现. 说
iOS 开发 把握AFNet网络请求完成的正确时机
前言 对于iOS开发中的网络请求模块,AFNet的使用应该是最熟悉不过了,但你是否把握了网络请求正确的完成时机?本篇文章涉及线程同步.线程依赖.线程组等专用名词的含义,若对上述名词认识模糊,可先进行查阅理解后阅读本文.如果你也纠结于文中所述问题,可进行阅读希望对你有所帮助.大神无视勿喷. 在真实开发中,我们通常会遇到如下问题: 一.某界面存在多个请求,希望所有请求均结束才进行某操作. 对于这一问题的解决方案很容易想到通过线程组进行实现.代码如下: 1 2 3 4 5 6 7 8 9 10 11
iOS开发项目篇—39获取用户未读的微博信息(信息提醒)
iOS开发项目篇—39获取用户未读的微博信息(信息提醒) 一.简单说明 1.实现效果 2.实现 (1)新建一个类,封装请求 查看新浪官方要求的请求参数 该类中的代码设计 YYUnreadCountParam.h文件 1 // YYUnreadCountParam.h 2 //封装请求参数的类 3 4 #import "YYBaseParam.h" 5 6 @interface YYUnreadCountParam : YYBaseParam 7 /**uid true in
iOS开发项目篇—30下拉刷新
iOS开发项目篇—30下拉刷新 一.网络监控 当应用所处的网络环境不好的时候,获取不到相应的网络数据,考虑到用户对应用的使用体验,有必要对网络的状况进行监听. 在程序启动完的时候,监控网络 YYAppDelegate.m文件代码: 1 // 2 // YYAppDelegate.m 3 // 4 5 #import "YYAppDelegate.h" 6 #import "YYOAuthViewController.h" 7 #import "YYCont
iOS开发拓展篇-XMPP简单介绍
iOS开发拓展篇-XMPP简单介绍 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容 有许多的IM系统,如AOL IM.Yahoo IM. MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议 协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已
学习IOS开发项目篇--如何让程序在后台保持挂起状态
程序的状态分为:前台运行,后台挂起,后台休眠,为了让项目的网络请求保持活跃状态,需要对程序进行设置. 在applicationDidEnterBackground方法中调用下面的方法,可以让程序进入挂起状态,但在未知时间内,可能会被系统设置为休眠,如果在将程序设置为播放器,并且循环播放一个MP3文件,可以保持永久挂起状态. UIBackgroundTaskIdentifier task =[application beginBackgroundTaskWithExpirationHandler:
iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用 一.主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行. 提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程. 获取主队列的方式: dispatch_queue_t queue=dispatch_get_main_queue(); (1)使用异步函数执行主队列中得任务,代码示例: 1 // 2 // YYViewController.m 3 //
iOS开发多线程篇 10 —NSOperation基本操作
iOS开发多线程篇—NSOperation基本操作 一.并发数 (1)并发数:同时执?行的任务数.比如,同时开3个线程执行3个任务,并发数就是3 (2)最大并发数:同一时间最多只能执行的任务的个数. (3)最?大并发数的相关?方法 - (NSInteger)maxConcurrentOperationCount;- (void)setMaxConcurrentOperationCount:(NSInteger)cnt; 说明:如果没有设置最大并发数,那么并发的个数是由系统内存和CPU决定的,可能
iOS开发UI篇—实现一个私人通讯录小应用(一)
iOS开发UI篇—实现一个私人通讯录小应用(一) 一.该部分主要完成内容 1.界面搭建 2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2).当取消勾选记住密码后,自动登录按钮也随之取消:当勾选了自动登录按钮时,记住密码按钮也一同勾选. (3).点击登陆后,弹出蒙版,界面不可交互,程序能够简单判断账号和密码是否正确,如果不正确则给出相应的提示,如果正确则跳转到联系人列表界面. 二.实现过程和代码 项目文件结构图和界面搭建