iOS開發網絡篇—監測網絡狀態

一、說明

在網絡應用中,需要對用戶設備的網絡狀態進行實時監控,有兩個目的:

(1)讓用戶了解自己的網絡狀態,防止一些誤會(比如怪應用無能)

(2)根據用戶的網絡狀態進行智能處理,節省用戶流量,提高用戶體驗

WIFI\3G網絡:自動下載高清圖片

低速網絡:只下載縮略圖

沒有網絡:只顯示離線的緩存數據

蘋果官方提供了一個叫Reachability的示例程序,便于開發者檢測網絡狀態

https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

二、監測網絡狀態

Reachability的使用步驟

添加框架SystemConfiguration.framework

添加源代碼

包含頭文件

#import "Reachability.h"

代碼示例:

#import "YYViewController.h"

#import "Reachability.h"

@interface YYViewController ()

@property (nonatomic, strong) Reachability *conn;

@end

@implementation YYViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

self.conn = [Reachability reachabilityForInternetConnection];

[self.conn startNotifier];

}

- (void)dealloc

{

[self.conn stopNotifier];

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

- (void)networkStateChange

{

[self checkNetworkState];

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

}

- (void)checkNetworkState

{

// 1.檢測wifi狀態

Reachability *wifi = [Reachability reachabilityForLocalWiFi];

// 2.檢測手機是否能上網絡(WIFI\3G\2.5G)

Reachability *conn = [Reachability reachabilityForInternetConnection];

// 3.判斷網絡狀態

if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi

NSLog(@"有wifi");

} else if ([conn currentReachabilityStatus] != NotReachable) { // 沒有使用wifi, 使用手機自帶網絡進行上網

NSLog(@"使用手機自帶網絡進行上網");

} else { // 沒有網絡

NSLog(@"沒有網絡");

}

}

@end

// 用WIFI

// [wifi currentReachabilityStatus] != NotReachable

// [conn currentReachabilityStatus] != NotReachable

// 沒有用WIFI, 只用了手機網絡

// [wifi currentReachabilityStatus] == NotReachable

// [conn currentReachabilityStatus] != NotReachable

// 沒有網絡

// [wifi currentReachabilityStatus] == NotReachable

// [conn currentReachabilityStatus] == NotReachable

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容