1. 程式人生 > >iOS 開發網路篇—監測網路狀態

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

一、說明

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

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

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

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

  低速網路:只下載縮圖

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

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

二、監測網路狀態

Reachability的使用步驟

新增框架SystemConfiguration.framework

 

新增原始碼

 

包含標頭檔案

#import "Reachability.h"

程式碼示例:

複製程式碼
 1 #import "YYViewController.h"
 2 #import "Reachability.h"
 3 
 4 @interface YYViewController ()
 5 @property (nonatomic, strong) Reachability *conn;
 6 @end
 7 
 8 @implementation YYViewController
 9 
10 - (void)viewDidLoad
11 {
12     [super viewDidLoad];
13     
14     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
15     self.conn = [Reachability reachabilityForInternetConnection];
16     [self.conn startNotifier];
17 }
18 
19 - (void)dealloc
20 {
21     [self.conn stopNotifier];
22     [[NSNotificationCenter defaultCenter] removeObserver:self];
23 }
24 
25 - (void)networkStateChange
26 {
27     [self checkNetworkState];
28 }
29 
30 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
31 {
32 
33 }
34 
35 - (void)checkNetworkState
36 {
37     // 1.檢測wifi狀態
38     Reachability *wifi = [Reachability reachabilityForLocalWiFi];
39     
40     // 2.檢測手機是否能上網路(WIFI\3G\2.5G)
41     Reachability *conn = [Reachability reachabilityForInternetConnection];
42     
43     // 3.判斷網路狀態
44     if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
45         NSLog(@"有wifi");
46         
47     } else if ([conn currentReachabilityStatus] != NotReachable) { // 沒有使用wifi, 使用手機自帶網路進行上網
48         NSLog(@"使用手機自帶網路進行上網");
49         
50     } else { // 沒有網路
51         
52         NSLog(@"沒有網路");
53     }
54 }
55 @end
56 
57 // 用WIFI
58 // [wifi currentReachabilityStatus] != NotReachable
59 // [conn currentReachabilityStatus] != NotReachable
60 
61 // 沒有用WIFI, 只用了手機網路
62 // [wifi currentReachabilityStatus] == NotReachable
63 // [conn currentReachabilityStatus] != NotReachable
64 
65 // 沒有網路
66 // [wifi currentReachabilityStatus] == NotReachable
67 // [conn currentReachabilityStatus] == NotReachable

相關推薦

iOS 開發網路監測網路狀態

一、說明 在網路應用中,需要對使用者裝置的網路狀態進行實時監控,有兩個目的: (1)讓使用者瞭解自己的網路狀態,防止一些誤會(比如怪應用無能) (2)根據使用者的網路狀態進行智慧處理,節省使用者流量,提高使用者體驗   WIFI\3G網路:自動下載高清圖片   低速網路:只下載縮圖   沒有網路:只顯示離線

IOS開發之非同步載入網路圖片並快取本地實現瀑布流(一)

</pre><pre name="code" class="objc"></pre><pre name="code" class="objc">在前面的一篇部落格中,我寫了一個瀑布流照片牆的程式,由於之前的程式載入的圖片是本

iOS開發-- 常見坑(網路下載失敗)

  現在iOS9 和Xcode7 已經出來很久了但是還是有好多人不瞭解,或者不知道他們的新特性。 就簡單的說一下 下載這一個問題 在Xcode7 以後 Xcode就不再支援 http協議  而去支援https協議 所以我們進行網路請求的時候要改成https協議 方法   講

iOS開發測試不同的網路環境2G/3G/4G/WiFi

4G網路和Wifi雖然已經基本普及,但是在實際開發中,任然需要針對不同的網路環境給出迴應,比如Wifi環境下要自動快取視訊,2G環境下可能只需要載入縮圖等等,開發者如何開啟這些環境是接下來要說的 開啟Xcode—> Open Developer To

iOS 使用 Alamofire 實時監測網路狀況

最近在用Swift寫工程,,網路請求用的是Alamofire,在翻看這個庫的時候發現 NetworkReachabilityManager 可以進行網路監察,廢話不多說直接上程式碼吧,有興趣的朋友可以

iOS 開發中如何顯示網路圖片

              by Fanxiushu  2015-07-10 轉載或引用請註明原作者  iOS開發中,使用UIImageView控制元件來顯示圖片,非常簡單幾句話就能顯示一個完整的圖片:UIImageView* img =[[UIImageView allo

IOS開發UI--一個支持圖文混排的ActionSheet

log one 簡單介紹 button action 曾經 hot uitable ios 一、簡單介紹 UIActionSheet是IOS提供給我們開發人員的底部彈出菜單控件。一般用於菜單選擇、操作確認、刪除確認等功能。IOS官方提供的下面方式對UI

iOS開發UI—UITableview控件基本使用

ade scl table itl 示例 spa ces LEDE file iOS開發UI篇—UITableview控件基本使用 一、一個簡單的英雄展示程序 NJHero.h文件代碼(字典轉模型) #import <Foundation/Foundation.h

iOS開發UI—實現UITableview控件數據刷新

ani titles plist文件 mes 模型 source dequeue intro 自動 iOS開發UI篇—實現UITableview控件數據刷新 一、項目文件結構和plist文件 二、實現效果 1.說明:這是一個英雄展示界面,點擊選中行,可以修改改行英雄的名稱

iOS開發UI—xib的簡單使用

board ani uila tro 字典 tex mat inter .com iOS開發UI篇—xib的簡單使用 一、簡單介紹 xib和storyboard的比較,一個輕量級一個重量級。 共同點: 都用來描述軟件界面 都用Interface Builder工具來編輯 不

iOS開發UIIOS開發中Xcode的一些使用技巧

pen 檢查 elf eight return ui篇 bar mage \n iOS開發UI篇—IOS開發中Xcode的一些使用技巧 一、快捷鍵的使用 經常用到的快捷鍵如下: 新建 shift + cmd + n 新建項目 cmd + n

iOS開發UI—UITableview控件簡單介紹

object des car 頭部 cell 簡單 過程 ios nta iOS開發UI篇—UITableview控件簡單介紹 一、基本介紹 在眾多移動應?用中,能看到各式各樣的表格數據 。 在iOS中,要實現表格數據展示,最常用的做法就是使用UITableView

iOS開發UI—UIWindow簡單介紹

沒有 src alt 建議 不能 text 局部變量 lba bubuko iOS開發UI篇—UIWindow簡單介紹 一、簡單介紹 UIWindow是一種特殊的UIView,通常在一個app中只會有一個UIWindow iOS程序啟動完畢後,創建的第一個視圖控件就是UIW

iOS開發UI—使用storyboard創建導航控制器以及控制器的生命周期

拖拉 代理 生命周期 數據 app inter 它的 nsarray itl iOS開發UI篇—使用storyboard創建導航控制器以及控制器的生命周期 一、基本過程 新建一個項目,系統默認的主控制器繼承自UIViewController,把主控制器兩個文件刪掉。 在st

iOS開發UI——一個可擴充套件性極強的樹形控制元件

一、簡介 樹形控制元件在多列列表、多級選單中使用比較常見,比如:國家-省份-城市 多級選擇、學校-專業-班級 多級選擇等等。然而IOS自帶控制元件中並不存在樹形控制元件,我們要在IOS開發中使用樹形控制元件,通常需要自己擴充套件UITableView列表控制元件。現在在這裡開源一個自己寫的高擴充套件性,高複用

iOS開發UI--一個可擴充套件性極強的樹形控制元件

一、簡介 樹形控制元件在多列列表、多級選單中使用比較常見,比如:國家-省份-城市 多級選擇、學校-專業-班級 多級選擇等等。然而IOS自帶控制元件中並不存在樹形控制元件,我們要在IOS開發中使用樹形控制元件,通常需要自己擴充套件UITableView列表控制元件。現在在這裡開源一個自己寫的高擴充套件性,高複

iOS開發UI--一個可擴展性極強的樹形控件

擴展 style throw 實例 .text 插入 shee 節點 nsh 一、簡介 樹形控件在多列列表、多級菜單中使用比較常見,比如:國家-省份-城市 多級選擇、學校-專業-班級 多級選擇等等。然而IOS自帶控件中並不存在樹形控件,我們要在IOS開發中使用樹形控件,通常

iOS開發資料庫 — SQLite簡單介紹

iOS開發資料庫篇 — SQLite簡單介紹一、離線快取在專案開發中,通常都需要對資料進行離線快取的處理,如新聞資料的離線快取等。說明:離線快取一般都是把資料儲存到專案的沙盒中。有以下幾種方式(1)歸檔:NSCodeing、NSKeyedArchiver(2)偏好設定:NSUserDefaults(3)Pli

iOS開發UI—核心動畫簡介

一、簡單介紹 Core Animation,中文翻譯為核心動畫,它是一組非常強大的動畫處理API,使用它能做出非常炫麗的動畫效果,而且往往是事半功倍。也就是說,使用少量的程式碼就可以實現非常強大的功能。 Core Animation是跨平臺的,可以用在Mac OS X和iOS平臺。 Core Anima

iOS開發UI—CAlayer層的屬性

一、position和anchorPoint 1.簡單介紹 CALayer有2個非常重要的屬性:position和anchorPoint @property CGPoint position; 用來設定CALayer在父層中的位置 以父層的左上角為原點(0, 0) @property CGPoin