開源中國iOS用戶端基於網路同步資料,從而達到與網頁看到同樣資料效果,所以在啟動程式的時候需要檢查網路;這也是每一個連網應用啟動的第一步,如果連網應用沒有檢查網路,蘋果公司將不予以審核通過;
開源中國iOS用戶端大牛們在寫網路檢測時很迷惑人,開始以為他們用的是ASI類庫做的網路檢測,今天才看明白,他們並不是用的ASI類庫檢測,而是用到AFNetworking這個類庫裡一個執行個體方法做網路連接檢測;
先看Appdelegate檔案:
在application:didFinishLaunchingWithOptions:方法裡
//檢查網路是否存在 如果不存在 則彈出提示 [Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork];
在applicationDidBecomeActive:方法裡
- (void)applicationDidBecomeActive:(UIApplication *)application { [Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork]; if ([Config Instance].isNetworkRunning == NO) { UIAlertView *myalert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"未串連網路,將使用離線模式" delegate:self cancelButtonTitle:@"確認" otherButtonTitles:nil,nil]; [myalert show]; } }
都用到了[Config Instance].isNetworkRunning = [CheckNetwork isExistenceNetwork];再看看Config和CheckNetwork這兩個類定義
Config類的Instance方法,
static Config * instance = nil; +(Config *) Instance { @synchronized(self) { if(nil == instance) { [self new]; } } return instance; }
從字面意思也能推測出是給Cinfig類執行個體化用的,isNetworkRunning是BOOL型變數
CheckNetwork在ASIHttp檔案裡,和ASI類庫放到一塊的,(裡面漢字出現亂碼)
+(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; }