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时,涉及网络连接的时候,都会想着提前判断一下当前的 ...
随机推荐
- 学习练习 Java冒泡排序 二分查找法
冒泡排序: // 冒泡排序 /* System.out.println("请输入要排序的个数:"); Scanner v = new Scanner(System.in); int ...
- .Net字符串驻留池
在.Net中,对于相同的字符串,.Net会将它们指向同一个地址,它们是相同的实例..Net中的字符串并不会更新,当更改一个字符串变量时,由于字符串的不可变性,.Net实际上是新创建一个字符串,而将变量 ...
- Android IOS WebRTC 音视频开发总结(十四)-- sip和xmpp异同
这篇文章主要介绍XMPP与SIP,很多人容易混淆这两个概念,转载请说明出处(博客园RTC.Blacker). 简介:XMPP和SIP都是应用层协议,主要用于互联网上发送语音和即时通讯. SIP在RFC ...
- C puzzles详解【51-57题】
第五十一题 Write a C function which does the addition of two integers without using the '+' operator. You ...
- ASP.NET MVC5 入门
参考资料<ASP.NET MVC5 高级编程>第5版 第1章 入门 1.1 ASP.NET MVC 简介 ASP.NET MVC是一种构建Web 应用程序的框架,它将一般的MVC(Mode ...
- linux下多ISP的策略路由
http://kerry.blog.51cto.com/172631/385578/ 修改/etc/iproute2/rt_tables 先在 /etc/iproute2/rt_tables 下建兩個 ...
- IOS基础——实例变量四种范围类型
1.为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性. 但是为了提供灵活性,苹果也让开发者显示设置范围(四选一). 2.四种编译指令如下: @private 实例变量只能被声 ...
- MongoDB简述
简介 MongoDB is an open-source document database that provides high performance, high availability, an ...
- WordPress 主题开发 - (十二) Search模板与Page模板 待翻译
The Search Template and The Page Template are vital to any complete WordPress Theme. And they're bot ...
- 在Nginx 下运行 Laravel5.1 的配置
一.nginx 的 vhost.conf 配置: server { listen ; server_name sub.domain.com; set $root_path '/srv/www/defa ...