获得网络状态和实时监控网络状态改变
来源:互联网 发布:情趣用品,淘宝免费代理 编辑:程序博客网 时间:2024/06/11 21:45
Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。
Reachability 中定义了3种网络状态:
- NotReachable
无连接
- ReachableViaCarrierDataNetwork (ReachableViaWWAN)
使用3G/GPRS网络
- ReachableViaWiFiNetwork (ReachableViaWiFi)
使用WiFi网络
检测莫个特定站点的连接状况
Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"]; switch ([r currentReachabilityStatus]) { case NotReachable: // 没有网络连接 break; case ReachableViaWWAN: // 使用3G网络 break; case ReachableViaWiFi: // 使用WiFi网络 break; }
检测当前网络环境
// 是否wifi + (BOOL) IsEnableWIFI { return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable); } // 是否3G + (BOOL) IsEnable3G { return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable); }
连接状态实时通知
网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户。由于Reachability1.5版与2.0版有一些变化,这里分开来说明使用方法。Reachability 1.5
// My.AppDelegate.h#import "Reachability.h"@interface MyAppDelegate : NSObject <UIApplicationDelegate> { NetworkStatus remoteHostStatus;}@property NetworkStatus remoteHostStatus;@end// My.AppDelegate.m#import "MyAppDelegate.h"@implementation MyAppDelegate@synthesize remoteHostStatus;// 更新网络状态- (void)updateStatus { self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];}// 通知网络状态- (void)reachabilityChanged:(NSNotification *)note { [self updateStatus]; if (self.remoteHostStatus == NotReachable) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil) message:NSLocalizedString(@"NotReachable", nil) delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; [alert release]; }}// 程序启动器,启动网络监视- (void)applicationDidFinishLaunching:(UIApplication *)application { // 设置网络检测的站点 [[Reachability sharedReachability] setHostName:@"www.apple.com"]; [[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES]; // 设置网络状态变化时的通知函数 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil]; [self updateStatus];}- (void)dealloc { // 删除通知对象 [[NSNotificationCenter defaultCenter] removeObserver:self]; [window release]; [super dealloc];}
Reachability 2.0
// MyAppDelegate.h@class Reachability;@interface MyAppDelegate : NSObject <UIApplicationDelegate> { Reachability *hostReach;}@end// MyAppDelegate.m- (void)reachabilityChanged:(NSNotification *)note { Reachability* curReach = [note object]; NSParameterAssert([curReach isKindOfClass: [Reachability class]]); NetworkStatus status = [curReach currentReachabilityStatus]; if (status == NotReachable) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AppName"" message:@"NotReachable" delegate:nil cancelButtonTitle:@"YES" otherButtonTitles:nil]; [alert show]; [alert release]; }}- (void)applicationDidFinishLaunching:(UIApplication *)application { // ... // 监测网络情况 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain]; [hostReach startNotifer]; // ...}
- 获得网络状态和实时监控网络状态改变
- 获得网络状态和实时监控网络状态改变
- 实时监控网络状态
- Android实时监控网络状态
- linux 下的网络状态实时监控
- iOS之AFNetworking实时网络状态监控
- Android程序中实时监控网络状态
- Android之实时监控网络状态
- Android开发网络状态实时监控
- RealReachability网络状态实时监控使用
- 实时检测网络状态
- 实时监测网络状态
- 网络状态实时监测
- 获得iOS 网络状态
- Android 监控网络状态
- Android 监控网络状态
- Android 监控网络状态
- Android 监控网络状态
- 云计算的优劣
- MFC MDI 全屏实现
- 尽量别在for循环里面定义变量
- iPhone Http 服务器Mongoose的使用
- VS2010 C# 如何跨域远程调试
- 获得网络状态和实时监控网络状态改变
- 印度最大电商网站Flipkart新增预付钱包功能
- 经典的代码
- Guid 介绍
- linux使用yum命令产生的进程锁问题
- const指针和指向const对象的指针
- windows程序设计笔记
- C#自定义控件
- Java中@Override的作用