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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

前言:當(dāng)應(yīng)用程序需要訪問(wèn)網(wǎng)絡(luò)的時(shí)候,它首先應(yīng)該檢查設(shè)備的網(wǎng)絡(luò)狀態(tài),確認(rèn)設(shè)備的網(wǎng)絡(luò)環(huán)境及連接情況,并針對(duì)這些情況提醒用戶做出相應(yīng)的處理。最好能監(jiān)聽設(shè)備的網(wǎng)絡(luò)狀態(tài)的改變,當(dāng)設(shè)備網(wǎng)絡(luò)狀態(tài)連接、斷開時(shí),程序也應(yīng)該有相應(yīng)的處理。

開發(fā)工具:xcode6.3.2 操作系統(tǒng):OS X Yosemite10.10.4 學(xué)習(xí)來(lái)源:《瘋狂IOS講義(下)》中的ios網(wǎng)絡(luò)應(yīng)用編程

1、下載,添加Reachability類。

官網(wǎng)下載網(wǎng)址:

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然后放進(jìn)工程下:

2、

添加SystemConfiguration.framework框架

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

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

3、實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)聽以及按鈕測(cè)試的代碼:

要點(diǎn):

<1>如果是要自動(dòng)監(jiān)聽手機(jī)聯(lián)網(wǎng)的狀態(tài),就需要使用默認(rèn)的通知中心對(duì)象[NSNotificationCenter defaultCenter]來(lái)通過(guò)監(jiān)聽

kReachabilityChangedNotification通知,并且當(dāng)通知中心收到通知,就觸發(fā)另一個(gè)自定義的成員方法的reachabilityChanged:方法。

源代碼寫法:

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(netChanged:) name:kReachabilityChangedNotification

object:nil];

<2>然后是不管是在上面創(chuàng)建通信中心之后,還是在為按鈕組件的觸發(fā)點(diǎn)擊事件綁定的代碼中,都要?jiǎng)?chuàng)建一個(gè)網(wǎng)絡(luò)可達(dá)型對(duì)象(有兩種):

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

-2-Reachability *reach =[Reachability reachabilityForInternetConnection]

<3>然后通過(guò)Reachability對(duì)象獲取當(dāng)前網(wǎng)絡(luò)狀態(tài):

[reach currentReachabilityStatus]

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

typedef enum : NSInteger {

NotReachable = 0,

ReachableViaWiFi,

ReachableViaWWAN

} NetworkStatus;

也就是說(shuō)這三個(gè)值代表著網(wǎng)絡(luò)連接三種狀態(tài)。

另外補(bǔ)充:

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

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

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

@property (nonatomic,strong) Reachability *conn;

然后在ViewController.m中用conn創(chuàng)建一個(gè)Reachability對(duì)象,并且

[conn startNotifier]。

然后才能在ViewController.m中或者AppDelegate.m中設(shè)置自動(dòng)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的代碼。

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

以上是本人半年前的學(xué)習(xí)積累,其中關(guān)于最后的"另外補(bǔ)充"其實(shí)就是很基本的原因,就是沒(méi)有使用property的全局作用使得Reachability只能作用于某個(gè)方法內(nèi)部,從而會(huì)在程序運(yùn)行過(guò)程中就會(huì)出現(xiàn)無(wú)效的結(jié)果。

下面是本人在2016年2月25日更新的網(wǎng)絡(luò)監(jiān)聽代碼使用快速一覽

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


總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。