ios網絡開發 網絡狀態檢查

http://www.cnblogs.com/hanjun/archive/2012/12/01/2797622.html

網絡連接中用到的類:

一.Reachability?

? ? 1.添加?Reachability 的.h和.m文件,再添加SystemConfiguration.framework。

? ? 2.Reachability中定義了三種網絡狀態:

? typedef Num{

NotReachable = 0, ?//無連接

ReachableViaWiFi, ?//使用3G/GPRS網絡

ReachableViaWWAN? ?//使用WiFi網絡

? ? ? ?}NetworkStatus;

? ? ?3.示例:

??Reachability *reachability = [Reachablity ?reachabilityWithHostName:@"www.baidu.com"];

? switch([reachabilityStatus]){

case??NotReachable:

//TODO?

break;?

case ?ReachableViaWiFi:

//TODO ?

break;?

case ?ReachableViaWWAN:

//TODO ?

break;??

?}?

? ? ? 4.檢查當前網絡環境

程序啟動時,如果想檢測可用的網絡環境,可以像這樣來使用

? //是否wifi

+ (BOOL)isEnableWIFI?

{

return ([[Reachability reachabiliyForLocalWIFI] currentReachabilityStatus] != NotReachable);?

? ?}

?

?? //是否3G

+ (BOOL)isEnable3G

{

return ([[Reachability reachabiliyForInternetConnetion] currentReachabilityStatus] != NotReachable);?

? ?}

?

?? 示例:

- (void)viewWillAppear:(BOOL)animated

{?

? if (([Reachability reachabiliyForInternetConnetion].currentReachabilityStatus ==?NotReachable) &&?[Reachability ? ? ? ? ? ? ? ? ? ? ? ? reachabiliyForLocalWIFI].currentReachabilityStatus == NotReachable))

{

self.navigationItem.hidesBackButton = YES;

[self.navigationItem setLeftBarButtonItem:nil animated:NO];?

}?

?

?}?

?

? ? ? ?5.鏈接狀態的實時通知

實時檢查,持續狀態發生變化時,需要及時地通知用戶:

?

復制代碼
Reachability?1.5版本
//MyAppDelegate.h

#import?"Reachability"

@interface?MyAppDelegate:NSObject<UIApplicationDelegate>
{
????
}

@property?NetworkStatus?remoteHostStatus;

@end?
復制代碼

?

?//MyAppDelegate.m

復制代碼

#import?"MyAppDelegate.h"

@implementation?MyAppDelegate
@synthesize?remoteHostStatus;

//更新網絡狀態
-?(void)updateStatus
{
????self.remoteHostStatus?=?[[Reachability?sharedReachability]?remoteHostStatus];
}

//通知網絡狀態
-?(void)reachabilityChanged:(NSNotification?*)note
{
????[self?updateStatus];
????if?(self.remoteHostStatus?==?NotReachable)
???{
???????UIAlert?*alert?=?[[UIAlertView?alloc]?initWithTitle:NSLocalizedString(@"AppName",nil)
??message:?NSLocalizedString?(@"NotReachable",nil);
??delegate:nil?cancelButtonTitle:@"OK"?
??otherButtonTitles:nil];

???[alert?show];
???[alert?release];
????}
}


//程序啟動器,啟動網絡監視
-?(void)applicationDidFinishLaunching:(UIApplication?*)application
{
???//設置網絡監測的站點
???[[Reachability?sharedReachability]?setHostName:@"www.baidu.com"];
???[[Reachability?sharedReachability]?setNetworkStatusNotificationsEnabled:YES];

???//設置網絡狀態變化時的通知函數
???[[NSNotificationCenter?defaultCenter]?addObserver:self?selector:@selector(reachabilityChanged:)?
name:@"kNetworkReachabilityChangedNotification"?object:nil];
???[self?updateStatus];


}

-?(void)dealloc
{
????//刪除通知對象
????[[NSNotificationCenter?defaultCenter]?removeObserver:self];
????[window?release];
????[super?dealloc];
}
復制代碼

?

?

復制代碼
Reachability?2.0版本
//MyAppDelegate.h

#import?"Reachability"
@class?Reachability;
@interface?MyAppDelegate:NSObject<UIApplicationDelegate>
{
?????Reachability?*hostReach;
}


@end?
?
?//MyAppDelegate.m

#import?"MyAppDelegate.h"

@implementation?MyAppDelegate

//通知網絡狀態
-?(void)reachabilityChanged:(NSNotification?*)note
{
????Reachability?*currentReach?=?[note?object];
????NSParameterAssert([currentReach?isKindOfClass:[Reachability?class]]);
????NetworkStatus?status?=?[currentReach?currentReachabilityStatus];?

????if?(status?==?NotReachable)
???{
???????UIAlert?*alert?=?[[UIAlertView?alloc]?initWithTitle:NSLocalizedString(@"AppName",nil)
??message:?NSLocalizedString?(@"NotReachable",nil);
??delegate:nil?cancelButtonTitle:@"YES"?
??otherButtonTitles:nil];

???[alert?show];
???[alert?release];
????}
}


//程序啟動器,啟動網絡監視
-?(void)applicationDidFinishLaunching:(UIApplication?*)application
{
???//....

???//監測網絡情況
???[[NSNotificationCenter?defaultCenter]?addObserver:self?selector:@selector(reachabilityChanged:)?
name:@"kNetworkReachabilityChangedNotification"?object:nil];
??hostReach?=?[[Reachability?reachabilityWithHostName:@"www.baidu.com"]?retain];
?//?hostReach?startNotifer];?
???//...


}
復制代碼

?

?

二、其他常用的類。

?1.NSURL

?2.NSURLRequest

?3.NSMutableURLRequest 是NSURLRequest的子類,可以設置一些請求參數

?4.NSURLResponse?

?5.NSError?

轉載于:https://www.cnblogs.com/xuejinhui/p/4469624.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

delphi xe4 ini文件不能讀取的解決方法

今天發現用inifiles下 tinifile.readstring方法突然不能讀數據了&#xff0c;結果把ini文件格式由utf-8改成unicode后就能正常讀取了。轉載于:https://www.cnblogs.com/liqiao/p/3503985.html

《眾妙之門——網頁排版設計制勝秘訣》——3.4 展現品牌視覺的同時保持網頁的可讀性...

本節書摘來自異步社區《眾妙之門——網頁排版設計制勝秘訣》一書中的第3章&#xff0c;第3.4節&#xff0c;作者&#xff1a; 【德】Smashing Magazine 譯者&#xff1a; 侯景艷 , 范辰 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 3.4 展現品牌視覺的同時保持網頁的…

vs2013創建及使用DLL

這幾天看了許多關于生成Dll的博文&#xff0c;很有感觸&#xff0c;遂整理在此&#xff0c;以供自己后續參考。 VS2013創建DLL 我們使用vs2013來生成Dll&#xff0c;其實使用其他的版本也是同理如此。步驟如下&#xff1a; 單擊“新建項目”&#xff0c;選擇“Win32 項目”&a…

python的作用域分別有幾種_python中作用域與函數嵌套

知識回顧&#xff1a; 拆解傳參。 1.字典傳參。使用** 2.列表傳參。使用* 實際上我們在定義函數的時候&#xff0c;如果省略了星號&#xff0c;那么在調用函數的時候必須要省略星號&#xff0c;除非我們拆解后的參數個數剛好相等。 視頻內容 本節知識視頻教程 文字講解開始&…

這個博客的由來

筆者從事電信行業大型商業智能系統工作多年&#xff0c;日前從事B2C電商網站類數據分析工作&#xff0c;特開設此微博&#xff0c;在發表好文同時&#xff0c;研究網站分析技術。轉載于:https://www.cnblogs.com/sambazhu/p/3508633.html

《Axure RP8 網站和APP原型制作 從入門到精通》一2.7 交付

本節書摘來自異步社區《Axure RP8 網站和APP原型制作 從入門到精通》一書中的第2章&#xff0c;第2.7節&#xff0c;作者 金烏&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 2.7 交付 模型一旦經過批準&#xff0c;我們就可以進入切圖和優化圖像環節了。我…

iOS UISegmentedControl 的使用

當用戶輸入不僅僅是布爾值時&#xff0c;可使用分段控件&#xff08;UISegmentedControl&#xff09;。分段控件提供一欄按鈕&#xff08;有時稱為按鈕欄&#xff09;&#xff0c;但只能激活其中一個按鈕。分段控件會導致用戶在屏幕上看到的內容發生變化。它們常用于在不同類別…

js粘貼板為什么獲取不到圖片信息_【第1829期】復制黏貼上傳圖片和跨瀏覽器自動化測試...

前言這個操作體驗倒是不錯。今日早讀文章由丁香園蔣璇投稿分享。蔣璇, 前端開發攻城獅, 現任職于丁香園. 英語愛好者, 測試驅動開發(TDD)&行為驅動開發(BDD)推崇者. 先專注于 https://github.com/Jiang-Xuan/tuchuang.space 項目的測試驅動開發探索正文從這開始~~在網頁中上…

在C++中調用DLL中的函數

&#xfeff;轉載自&#xff1a;http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   應用程序使用DLL可以采用兩種方式&#xff1a;一種是隱式鏈接&#xff0c;另一種是顯式鏈接。在使用DLL之前首先要知道DLL中函數的結構信息。Visual C6.0&#xff08;或者更先進的版…

CentOS LVS安裝配置

目錄(?)[] 一般2.6.10以上內核版本都已經自帶了ipvsadm,故不需要安裝。 Ipvs 1.25編譯 ipvsadm-1.25編譯不過 去掉netlink庫的依賴&#xff1a;去掉libipvs/Makefile的CFLAGS -DLIBIPVS_USE_NL&#xff0c;去掉Makefile的LIBS -lnl。需要popt庫解析命令行&#xff0c;在這里…

《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一一2.7 橫式構圖和豎式構圖...

本節書摘來自異步社區出版社《淘寶網開店 拍攝 修圖 設計 裝修 實戰150招》一書中的第2章&#xff0c;第2.7節&#xff0c;作者&#xff1a; 葛存山&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.7 橫式構圖和豎式構圖 橫幅畫面&#xff0c;即畫面底邊…

Node.js初接觸(一)

本來還在糾結著到底要學哪一種后臺語言呢&#xff0c;突然發現node.js很火&#xff0c;既然能被這么多人推崇&#xff0c;自然是有他的優勢的。去百度百科看了一眼&#xff0c;或許是我理解能力太差&#xff0c;并沒有了解到很多關于node.js的東西&#xff0c;大概就是知道了No…

python request file upload_Python基于requests實現模擬上傳文件

方法1&#xff1a; 1.安裝requests_toolbelt依賴庫 #代碼實現 def upload(self): login_token self.token.loadTokenList() for token in login_token: tempPassword_url self.config[crm_test_api]/document/upload tempPassword_data self.data_to_str.strToDict(title:1.…

MATLAB中的randi函數

randi Pseudorandom integers from a uniform discrete distribution.來自一個均勻離散分布的偽隨機整數 R randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX.返回一個NN的包含偽隨機…

C++ dll的隱式與顯式調用

&#xfeff;&#xfeff;&#xfeff;轉載自&#xff1a;http://blog.sina.com.cn/s/blog_53004b4901009h3b.html   應用程序使用DLL可以采用兩種方式&#xff1a;一種是隱式鏈接&#xff0c;另一種是顯式鏈接。在使用DLL之前首先要知道DLL中函數的結構信息。Visual C6.0&…

《OpenGL ES 2.0游戲開發(上卷):基礎技術和典型案例》——6.5節光照的每頂點計算與每片元計算...

本節書摘來自異步社區《OpenGL ES 2.0游戲開發&#xff08;上卷&#xff09;&#xff1a;基礎技術和典型案例》一書中的第6章&#xff0c;第6.5節光照的每頂點計算與每片元計算&#xff0c;作者 吳亞峰&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 6.5 光照…

毛筆筆鋒算法IOS版

http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/#.VUln2_mqpBe轉載于:https://www.cnblogs.com/wangjinming/p/4481145.html

USE PDFCREATE TO CREATE A PDF FILE

來源&#xff1a;http://www.pdfforge.org/files/old_forum/1002.html a working sample with C & COM 2007-08-15 22:56:18 by eckart hi, here is a working sample of how to use PDFCreator in Visual C (after searching on internet for something similar I guess t…

python將一行作為字段_關于python:Django admin在同一行顯示多個字段

我已經創建了一個模型&#xff0c;它將自動顯示模型中的所有字段&#xff0c;并將其顯示在管理頁面上。 現在&#xff0c;我有一個問題&#xff0c;我希望在同一行中有兩個字段&#xff0c;為此&#xff0c;我必須在modeladmin中指定字段集&#xff1a; 1 2 3 4 5fieldsets ( …

c++顯式加載dll并使用DLL的類

轉載自&#xff1a; &#xfeff;&#xfeff;http://blog.163.com/tianjunqiang666126/blog/static/8725911920121064573594/ 首先需要強調&#xff0c;當使用某個類時一般目的有二&#xff1a;實例化成對象或者繼承它產生新類。對于前者&#xff0c;我們可以構造一個抽象類&a…