ios 網速監控 iOS 監測網路狀態

2021-10-17 01:49:17 字數 2816 閱讀 6315

在網路應用中,有的時候需要對使用者裝置的網路狀態進行實時監控,有兩個目的:

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

(2)根據使用者的網路狀態進行智慧型處理,節省使用者流量,提高使用者體驗

沒有網路:只顯示離線的快取資料

常用的有以下兩種方法:

(1)、使用蘋果觀法提供的檢測ios裝置網路環境用的庫 reachablity

(2)、使用afn框架中的afnetworkreachabilitymanager來監聽網路狀態的改變

一、蘋果官方提供了乙個叫reachability的示例程式,便於開發者檢測網路狀態

然後將reachability.h 和 reachability.m 加到自己的專案中,並引用 systemconfiguration.framework,就可以使用了。

reachability 中定義了3種網路狀態:

typedef enum : nsinteger networkstatus;

我們可以在程式啟動以後啟動實時監測

@property (nonatomic, strong) reachability *reachability;

@end

// 程式啟動器,啟動網路監視

// 設定網路檢測的站點

self.reachability = [reachability reachabilitywithhostname:remotehostname];

// 設定網路狀態變化時的通知函式

[[nsnotificationcenter defaultcenter] addobserver:self selector:@selector(reachabilitychanged:)

name:@"knetworkreachabilitychangednotification" object:nil];

[self updatestatus];

- (void)reachabilitystatuschange:(nsnotification *)notification

reachability* curreach = [notification object];

nsparameterassert([curreach iskindofclass:[reachability class]]);

[self updateinte***cewithreachability:curreach];

- (void)updateinte***cewithreachability:(reachability *)reachability

if (reachability == _reachability)

networkstatus netstatus = [reachability currentreachabilitystatus];

switch (netstatus)

case notreachable: {

nslog(@"沒有網路!");

break;

case reachableviawwan: {

nslog(@"4g/3g");

break;

case reachableviawifi: {

nslog(@"wifi");

break;

- (void)dealloc

[_reachability stopnotifier];

[[nsnotificationcenter defaultcenter] removeobserver:self name:kreachabilitychangednotification object:nil];

二、使用afn框架中的afnetworkreachabilitymanager來監聽網路狀態的改變

//使用afn框架來檢測網路狀態的改變

-(void)afnreachability

//1.建立網路監聽管理者

afnetworkreachabilitymanager *manager = [afnetworkreachabilitymanager sharedmanager];

//2.監聽網路狀態的改變

afnetworkreachabilitystatusunknown = 未知

afnetworkreachabilitystatusnotreachable = 沒有網路

afnetworkreachabilitystatusreachableviawwan = 3g

afnetworkreachabilitystatusreachableviawifi = wifi

[manager setreachabilitystatuschangeblock:^(afnetworkreachabilitystatus status) {

switch (status) {

case afnetworkreachabilitystatusunknown:

nslog(@"未知");

break;

case afnetworkreachabilitystatusnotreachable:

nslog(@"沒有網路");

break;

case afnetworkreachabilitystatusreachableviawwan:

nslog(@"3g");

break;

case afnetworkreachabilitystatusreachableviawifi:

nslog(@"wifi");

break;

default:

break;

//3.開始監聽

[manager startmonitoring];

ios 網速監控 iOS開發網路篇 監測網路狀態

一 說明 在網路應用中,需要對使用者裝置的網路狀態進行實時監控,有兩個目的 1 讓使用者了解自己的網路狀態,防止一些誤會 比如怪應用無能 2 根據使用者的網路狀態進行智慧型處理,節省使用者流量,提高使用者體驗 沒有網路 只顯示離線的快取資料 reachability 類中定義了三種網路狀態 type...

iOS 監測網路狀態

ios開發網路篇 監測網路狀態 ios開發網路篇 監測網路狀態 一 說明 在網路應用中,需要對使用者裝置的網路狀態進行實時監控,有兩個目的 1 讓使用者了解自己的網路狀態,防止一些誤會 比如怪應用無能 2 根據使用者的網路狀態進行智慧型處理,節省使用者流量,提高使用者體驗 沒有網路 只顯示離線的快取...

iOS 監測網路狀態

1 不廢話,直接上乾貨 在reachability.m檔案中匯入coretelephony庫 import 找到此方法if flags kscnetworkreachabilityflagsiswwan kscnetworkreachabilityflagsiswwan 修改,對了 先修改列舉值在r...