iOSReachability判断网络连接状态
//
// NetStateManage.h
//
// Created by miniu on 15/11/24.
// Copyright © 2015年 mini. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Reachability.h"
@protocol NetStateManageDelegate <NSObject>
@optional
-(void)networkStatusChange:(NetworkStatus)networkStatus;
@end
@interface NetStateManage : NSObject
@property (nonatomic,weak)id <NetStateManageDelegate>delegate;
+ (NetStateManage *)shareInstance;
//当前的网络状态
- (NetworkStatus)currentNetworkStatus;
@end
//
// NetStateManage.m
//
// Created by miniu on 15/11/24.
// Copyright © 2015年 mini. All rights reserved.
//
#import "NetStateManage.h"
@interface NetStateManage ()
{
Reachability *reachability;
NetworkStatus hostNetStatus;
}
@end
@implementation NetStateManage
- (instancetype)init
{
self = [super init];
if (self) {
//使用Reachability
[self useReachability];
}
return self;
}
- (void)useReachability{
// 监听网络状态改变的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
// 创建Reachability
reachability = [Reachability reachabilityForInternetConnection];
// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[reachability startNotifier];
}
// 处理网络状态改变
- (void)networkStateChange
{
// 1.检测wifi状态
Reachability *wifi = [Reachability reachabilityForLocalWiFi];
// 2.检测手机是否能上网络(WIFI\3G\2.5G)
Reachability *conn = [Reachability reachabilityForInternetConnection];
// 3.判断网络状态
if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
NSLog(@"有wifi");
hostNetStatus=ReachableViaWiFi;
} else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
NSLog(@"使用手机自带网络进行上网");
hostNetStatus=ReachableViaWWAN;
}else { // 没有网络
NSLog(@"没有网络");
hostNetStatus=NotReachable;
}
if ([self.delegate respondsToSelector:@selector(networkStatusChange:)]) {
[self.delegate networkStatusChange:hostNetStatus];
}
}
+ (NetStateManage *)shareInstance
{
static NetStateManage *hardwareManager=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
hardwareManager=[[self alloc] init];
});
return hardwareManager;
}
//返回当前的网络状态
- (NetworkStatus)currentNetworkStatus
{
return [reachability currentReachabilityStatus];
}
@end
iOSReachability判断网络连接状态的更多相关文章
- Win8 app判断网络连接状态
Win8 app判断网络连接状态 NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged; ...
- c#判断网络连接状态示例代码
使用c#判断网络连接状态的代码. 代码: public partial class Form1 : Form { [DllImport() == true) { label1.Text = " ...
- 【Android进阶】判断网络连接状态并自动界面跳转
用于判断软件打开时的网络连接状态,若无网络连接,提醒用户跳转到设置界面 /** * 设置在onStart()方法里面,可以在界面每次获得焦点的时候都进行检测 */ @Override protecte ...
- android判断网络连接状态、联网类型、运营商
/** * 获取上网方式 * * @param mContext * @return */ public static String getNetType(Context mContext) { St ...
- iOS 判断网络连接状态的几种方法
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #801b80 } p.p2 ...
- iOS开发——Reachability和AFNetworking判断网络连接状态
一.Reachability // 监听网络状态改变的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selec ...
- Android判断网络连接状态
有的时候我们的应用可能需要判断当前设备是否联网 private void init() { /** 获得系统级联网管理员对象 */ ConnectivityManager manager = (Con ...
- Offline.js - 自动判断网络连接状态并提醒用户
http://www.cnblogs.com/lhb25/p/offline-js-alert-users-when-no-internet-connectivity.html 使用 jslint/j ...
- iOS 如何判断当前网络连接状态 网络是否正常 网络是否可用
网络资源:出处http://blog.csdn.net/mad1989/article/details/8987368 众所周知,我们在开发APP时,涉及网络连接的时候,都会想着提前判断一下当前的 ...
随机推荐
- USACO Section 3.3 骑马修栅栏 Riding the Fences
题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个 ...
- 学习记录 java session保存用户登录
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- phpexcel 导入导出
导出excel /** * 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要 * 打开对应行的注释. * 如果使用 Excel5 ,输出的内容应该是GBK编码. */ //r ...
- max subquence sum(n^2)
#include<cstdio>#include<cstring>const int maxn=100005;int buf[maxn];int main(){ freopen ...
- extern “C”原理,用法以及使用场景-2016.01.05
1 问题提出 在编程过程中,经常发现如下用法: #ifndef _FILE_NAME_H_ #define _FILE_NAME_H_ #ifdef __cplusplus extern " ...
- 对像转成 和 byte 互转类库方法
using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serializatio ...
- 十八、ValueStack&ActionContext(非常重点:值栈)
ValueStack&ActionContext(非常重点:值栈) 1.针对用户的每次动作访问,都会创建属于自己的ValueStack对象 2.ValueStack中的的常用方法:功能一定要知 ...
- 如何实现Android 中断线程的处理
我现在对一个用户注册的功能1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)2.用一个线程clientThread执行数据的提交和返回 问题:考虑 ...
- jquery中选择ID以什么字符开头的匹配主要用于多个上传控件的时候,id无法使用,而且class不起作用的时候
$("[id^=remark]")选择ID以remark开头的所有数据进行匹配
- Linux安装VritualBox实现虚拟机win2003端口映射 支持远程
1. 使用VNC登录到Linux系统 2. 安装VritualBox 找到VritualBox的软件包 这里的是run格式的 可以直接在终端运行 需要几分钟时间 3.VritualBox新建虚拟机 ...