標籤:
使用之前請從Apple網站下載樣本:點此下載
Reachability 中定義了3種網路狀態:
typedef enum : NSInteger { NotReachable = 0,//無網路 ReachableViaWiFi,//wifi ReachableViaWWAN//3g} NetworkStatus;
比如檢測某一特定網站的接續狀況,可以使用下面的代碼:
Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"]; switch ([r currentReachabilityStatus]) { case NotReachable: // 沒有網路連接 NSLog(@"沒有網路連接"); break; case ReachableViaWWAN: NSLog(@"使用3g網路"); // 使用3G網路 break; case ReachableViaWiFi: NSLog(@"使用wifi網路"); // 使用WiFi網路 break; }
檢測當前網路環境:
// 是否wifi+ (BOOL) IsEnableWIFI { return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);}// 是否3G+ (BOOL) IsEnable3G { return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);}
串連狀態即時通知:
#import <UIKit/UIKit.h>#import "Reachability.h"@interface AppDelegate : UIResponder <UIApplicationDelegate> { Reachability *hostReach;}@property (strong, nonatomic) UIWindow *window;@end
- (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:@"提示" message:@"你的網路已中斷連線" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil]; [alert show]; }}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 監測網路情況 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil]; hostReach = [Reachability reachabilityWithHostName:@"www.google.com"];//可以以多種形式初始化 [hostReach startNotifier];//開始監聽,會啟動一個run loop return YES;}
iOS網路檢測