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