開源中國iOS客戶端基于網(wǎng)絡同步數(shù)據(jù),從而達到與網(wǎng)頁看到同樣數(shù)據(jù)效果,所以在啟動程序的時候需要檢查網(wǎng)絡;這也是每一個聯(lián)網(wǎng)應用啟動的第一步,如果聯(lián)網(wǎng)應用沒有檢查網(wǎng)絡,蘋果公司將不予以審核通過;
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務翁源,十余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18982081108
開源中國iOS客戶端大牛們在寫網(wǎng)絡檢測時很迷惑人,開始以為他們用的是ASI類庫做的網(wǎng)絡檢測,今天才看明白,他們并不是用的ASI類庫檢測,而是用到AFNetworking這個類庫里一個實例方法做網(wǎng)絡連接檢測;
先看Appdelegate文件:
在application:didFinishLaunchingWithOptions:方法里
//檢查網(wǎng)絡是否存在 如果不存在 則彈出提示 [Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork];
- (void)applicationDidBecomeActive:(UIApplication *)application { [Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork]; if ([Config Instance].isNetworkRunning == NO) { UIAlertView *myalert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"未連接網(wǎng)絡,將使用離線模式" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:nil,nil]; [myalert show]; } }
Config類的Instance方法,
static Config * instance = nil; +(Config *) Instance { @synchronized(self) { if(nil == instance) { [self new]; } } return instance; }從字面意思也能推測出是給Cinfig類實例化用的,isNetworkRunning是BOOL型變量
CheckNetwork在ASIHttp文件里,和ASI類庫放到一塊的,(里面漢字出現(xiàn)亂碼)
+(BOOL)isExistenceNetwork { // BOOL isExistenceNetwork; // Reachability *r = [Reachability reachabilityWithHostName:@"www.oschina.net"]; // switch ([r currentReachabilityStatus]) { // case NotReachable: // isExistenceNetwork=FALSE; // // NSLog(@"娌℃湁緗戠粶"); // break; // case ReachableViaWWAN: // isExistenceNetwork=TRUE; // // NSLog(@"姝e湪浣跨敤3G緗戠粶"); // break; // case ReachableViaWiFi: // isExistenceNetwork=TRUE; // // NSLog(@"姝e湪浣跨敤wifi緗戠粶"); // break; // } // return isExistenceNetwork; return YES; }本來是使用蘋果官方提供的Reachability來檢測網(wǎng)絡連接狀況,但是大牛們又給注釋掉了,return YES;
也就是[Config Instance].isNetworkRunning=YES;
但是當我把iMac網(wǎng)線拔掉運行的時候卻能檢測出網(wǎng)絡無連接,通過查找 “錯誤 網(wǎng)絡無連接”
發(fā)現(xiàn)他們都在AFNetworking類庫
- (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure 方法里面,
這個方法使用AFHTTPRequestOperation和“PATCH”請求HTTP客戶端操作隊列,使用到了block塊(iOS 4.0+特性),URL請求成功執(zhí)行success塊里操作,這里面block塊沒有返回值,接受兩個參數(shù),創(chuàng)建請求操作和響應數(shù)據(jù)請求,URL請求失敗執(zhí)行failure里面的方法,這個block塊里仍沒有返回值,接受兩個參數(shù)創(chuàng)建請求操作和NSError對象,描述網(wǎng)絡或解析錯誤狀況;
所以才有了上面截圖中網(wǎng)絡的連接檢測,拿源碼中一處來舉例
正在學習過程中,錯誤之處請指正,歡迎交流,共同學習;
歡迎轉載分享,請注明出處http://blog.csdn.net/duxinfeng2010
本文題目:開源中國iOS客戶端學習——(六)網(wǎng)絡連接檢測
網(wǎng)頁路徑:http://aaarwkj.com/article2/peipoc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、定制開發(fā)、Google、動態(tài)網(wǎng)站、微信小程序、面包屑導航
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)