iOS網絡監測

fdwm 9年前發布 | 2K 次閱讀 Objective-C IOS

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

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

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

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

低速網絡:只下載縮略圖

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

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

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

二、監測網絡狀態

Reachability的使用步驟

添加框架SystemConfiguration.framework

 

添加源代碼

包含頭文件

#import "Reachability.h"

#import "QYViewController.h"

#import "Reachability.h"

@interface QYViewController ()

@property (nonatomic, strong) Reachability *conn;

@end


@implementation QYViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    [[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)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(@"沒有網絡");

    }

}


 本文由用戶 fdwm 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!