开源中国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; }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索网络
, uialertview
, 中国
, 方法
, instance
, config
, asy
, 检测
, asy 排序
, ios自定义uialertview
, 自定义uialertview
Reachability
,以便于您获取更多的相关知识。