在網路應用中,有的時候需要對使用者裝置的網路狀態進行實時監控,有兩個目的:
(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...