日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发网络篇—Reachability检测网络状态

發布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发网络篇—Reachability检测网络状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:當應用程序需要訪問網絡的時候,它首先應該檢查設備的網絡狀態,確認設備的網絡環境及連接情況,并針對這些情況提醒用戶做出相應的處理。最好能監聽設備的網絡狀態的改變,當設備網絡狀態連接、斷開時,程序也應該有相應的處理。

開發工具:xcode6.3.2 操作系統:OS X Yosemite10.10.4 學習來源:《瘋狂IOS講義(下)》中的ios網絡應用編程

1、下載,添加Reachability類。

官網下載網址:

https://developer.apple.com/library/prerelease/ios/samplecode/Reachability/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007324-Intro-DontLinkElementID_2

獲取下載的zip文件包找到里面的:reachability.m和reachability.h然后放進工程下:

2、

添加SystemConfiguration.framework框架

然后打開Main.storyborad界面設計文件,添加1個UILabel、1個UITextField和3個UIButton,并將它們擺放整齊,如圖:

為了在程序鐘訪問界面上的文本框,可以將文本框綁定到siteField IBOulet屬性;為了讓程序能響應界面上3個按鈕的點擊事件,還需要為“測試”按鈕的“Touch Up Inside”事件綁定testNetStatus事件處理方法,為“測試wifi”按鈕的“Touch Up Inside”事件綁定testWifi事件處理方法,為了“測試3G/4G”按鈕的“Touch Up Inside”事件綁定testInternet事件處理方法。

3、實現網絡監聽以及按鈕測試的代碼:

要點:

<1>如果是要自動監聽手機聯網的狀態,就需要使用默認的通知中心對象[NSNotificationCenter defaultCenter]來通過監聽

kReachabilityChangedNotification通知,并且當通知中心收到通知,就觸發另一個自定義的成員方法的reachabilityChanged:方法。

源代碼寫法:

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(netChanged:) name:kReachabilityChangedNotification

object:nil];

<2>然后是不管是在上面創建通信中心之后,還是在為按鈕組件的觸發點擊事件綁定的代碼中,都要創建一個網絡可達型對象(有兩種):

-1-Reachability *reach = [Reachability reachabilityWithHostName:”www….”]

-2-Reachability *reach =[Reachability reachabilityForInternetConnection]

<3>然后通過Reachability對象獲取當前網絡狀態:

[reach currentReachabilityStatus]

這個方法返回的就是Reachability聲明中聲明了的枚舉三個枚舉值:

typedef enum : NSInteger {

NotReachable = 0,

ReachableViaWiFi,

ReachableViaWWAN

} NetworkStatus;

也就是說這三個值代表著網絡連接三種狀態。

另外補充:

很奇怪的是:和《瘋狂IOS講義下》(8.1檢測網絡狀態)提供的源代碼不一樣的地方是以上網絡狀態除了綁定組件監聽事件,也就是自動監聽網絡狀態的代碼可以僅僅寫在托管類AppDelegate.m中就可以運行,ViewController.m可以不寫任何代碼就可以運行。

但是自己新建的oc程序,然后按照同樣的步驟壓迫實現同樣效果卻需要額外的條件:

必須在ViewController.h聲明一個私有的成員變量:

@property (nonatomic,strong) Reachability *conn;

然后在ViewController.m中用conn創建一個Reachability對象,并且

[conn startNotifier]。

然后才能在ViewController.m中或者AppDelegate.m中設置自動監聽網絡狀態的代碼。

----------------------------------------------------------------------------------------------------------------------------------------------------------

以上是本人半年前的學習積累,其中關于最后的"另外補充"其實就是很基本的原因,就是沒有使用property的全局作用使得Reachability只能作用于某個方法內部,從而會在程序運行過程中就會出現無效的結果。

下面是本人在2016年2月25日更新的網絡監聽代碼使用快速一覽

----------------------------------------------------------------------------------------------------------------------------------------------------------


總結

以上是生活随笔為你收集整理的iOS开发网络篇—Reachability检测网络状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。