.h文件
#import <Foundation/Foundation.h>
#import "Reachability.h"
@interface NetworkManager : NSObject
/// 单例模式
+ (NetworkManager *)shareNetworkManager;
/// 开启网络状态监听
- (BOOL)startNetworkStatusNotifier;
/// 获得当前的网络状态
+ (BOOL)getNetworkStatus;
.m文件
#import "NetworkManager.h"
static NetworkManager *staticNetworkStatusManager; // 单例实例
static NetworkStatus staticCurrentNetworkStatus; // 当前网络连接
@implementation NetworkManager
{
Reachability *hostReachbility;
}
// 单例模式
+ (NetworkManager *)shareNetworkManager
{
if (nil == staticNetworkStatusManager)
{
staticNetworkStatusManager = [[NetworkManager alloc] init];
}
return staticNetworkStatusManager;
}
// 开启网络状态监听
- (BOOL)startNetworkStatusNotifier
{
// 检测设备网络状态,可以以多种形式初始化
hostReachbility = [Reachability reachabilityWithHostName:@"www.baidu.com"];
// 获得设备现在的网络状态
staticCurrentNetworkStatus = [hostReachbility currentReachabilityStatus];
// 开启网络状况的监听
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
// 开始监听,会启动一个run loop
return [hostReachbility startNotifier];
}
// 处理连接改变后的情况
- (void)updateInterfaceWithReachability:(Reachability *)curReach
{
staticCurrentNetworkStatus = [curReach currentReachabilityStatus];
}
// 连接改变
- (void)reachabilityChanged:(NSNotification *)note
{
Reachability *curReach = [note object];
// NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
if ([curReach isKindOfClass:[Reachability class]])
{
[self updateInterfaceWithReachability: curReach];
}
}
// 获得当前的网络状态
+ (BOOL)getNetworkStatus
{
return staticCurrentNetworkStatus;
}
@end
使用
1 导入头文件
#import "NetworkManager.h"
2 初始化
在AppDelegate的方法“
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
”中设置// 获得设备的网络状态
[[NetworkManager shareNetworkManager] startNetworkStatusNotifier];
3 使用
if ([NetworkManager getNetworkStatus] == NotReachable)
{
}