iOS 判斷當前網路狀態的三種方法

2021-10-14 08:02:38 字數 2900 閱讀 2683

reachability

在 reachability標頭檔案中我們可以看到無網路,wifi和蜂窩網三個網路狀態的列舉值,如下:

typedef

enum

: nsinteger networkstatus;

(1)獲取網路狀態:

在ios 7之前,當使用者網路為蜂窩網路時,是沒法判斷3g、4g等網路型別的,ios 7 後是可以判斷的

-

(nsstring *

)internetstatus

return net;

}

(2)當使用者為手機自帶網路時,判斷具體網路型別

這時可以使用系統自帶的api來判斷是2g、3g還是4g,這就要使用到cttelephonynetworkinfo這類,記得在工程新增coretelephony.framework,並匯入標頭檔案

-

(nsstring *

)getnettype

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologyedge"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologywcdma"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologyhsdpa"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologyhsupa"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologycdma1x"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologycdmaevdorev0"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologycdmaevdoreva"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologycdmaevdorevb"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologyehrpd"])

elseif(

[currentstatus isequaltostring:

@"ctradioaccesstechnologylte"])

}

用此方法判斷的蜂窩網路型別有如下型別:

ctradioaccesstechnologygprs         //介於2g和3g之間,也叫2.5g ,過度技術    

ctradioaccesstechnologyedge //edge為gprs到第三代移動通訊的過渡,edge俗稱2.75g

ctradioaccesstechnologywcdma

ctradioaccesstechnologyhsdpa //亦稱為3.5g(3?g)

ctradioaccesstechnologyhsupa //3g到4g的過度技術

ctradioaccesstechnologycdma1x //3g

ctradioaccesstechnologycdmaevdorev0 //3g標準

ctradioaccesstechnologycdmaevdoreva

ctradioaccesstechnologycdmaevdorevb

ctradioaccesstechnologyehrpd //電信使用的一種3g到4g的演進技術, 3.75g

ctradioaccesstechnologylte //接近4g

通過系統statusbar判斷

這種方法在iphone x 上可能引起奔潰,可能是蘋果修改了statusbar的keypath,所以拿到的東西為nil,導致崩潰

//獲取當前網路狀態  (iphone x 上可能引發崩潰)

+(nsstring *

)networkingstatesfromstatebar

}

nsstring *statestring =

@"wifi"

;switch

(type)

return statestring;

}

通過afnetworking

#pragma mark - ------------- 監測網路狀態 --------------(

void

)monitornetworking

break

;case2:

break

;default

:break;}

if(status == afnetworkreachabilitystatusreachableviawwan || status == afnetworkreachabilitystatusreachableviawifi)

else}]

;}

ios 快速判斷當前網路狀態 三種方法

一 利用afn框架 1.建立網路狀態監測管理者 afnetworkreachabilitymanager manager afnetworkreachabilitymanager sharedmanager 2.監聽改變 manager setreachabilitystatuschangebloc...

ios 快速判斷當前網路狀態 三種方法

1 利用afn框架 1.建立網路狀態監測管理者 afnetworkreachabilitymanager manager afnetworkreachabilitymanager sharedmanager 2.監聽改變 manager setreachabilitystatuschangebloc...

iOS 判斷當前網路狀態

1.如果只判斷當前是否是無網的狀態 if reachability reachabilityforlocalwifi currentreachabilitystatus notreachable reachability reachabilityforinternetconnection curre...