我在我的应用程序中使用AFNetworking,我正在通过他们的内置类检查互联网连接。这是这个的代码,
- (void) startInternetConnectivityMonitoring
{
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
{
switch (status) {
case AFNetworkReachabilityStatusUnknown:
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
break;
case AFNetworkReachabilityStatusNotReachable:
break;
default:
break;
}
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
}];
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
}
我可以通过这个功能检查它,
- (BOOL) connected {
return [AFNetworkReachabilityManager sharedManager].reachable;
}
我还在我的应用程序中使用RESideMenu来设置侧边菜单,这是我的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self startInternetConnectivityMonitoring];
RootViewController *rootView = [[RootViewController alloc] init];
[rootView awakeFromNib];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = rootView;
[self.window makeKeyAndVisible];
return YES;
}
除 FirstViewController 外,所有其他视图控制器都运行良好。在 FirstViewController 中,我正在调用网络请求,在此之前,我会检查互联网连接。这就是问题所在。每次,它都会向我展示No internet
FirstViewController。因为,虽然它要求网络请求,AFNetworking
但不要更新互联网的状态。更新可能需要几秒钟的摩擦,但更新速度不会那么快。因为,我知道这个问题,我不想应用补丁来解决这个问题。我尝试了不同的方法来解决这个问题。用过的,
sleep(2);
在返回 YES 之前didFinishLaunchingWithOptions...
dispatch_synq
- 冻结应用程序
dispatch_asynq
- 不工作
.. and many other hacky ways
- 还没有帮助。