アプリで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
- まだ役に立ちません。