始终显示AFNetworking 2.0 Reachability警报

时间:2015-02-12 07:12:31

标签: ios afnetworking-2

我正在使用AFNetworking 2.0进行网络通话。我使用下面的代码来实现可达性。我的问题是,当我打开应用程序时,始终显示“未连接”警报。似乎应用程序需要一段时间才能连接到网络,并且滞后导致警报弹出。有没有什么办法解决这一问题?我不希望每次都弹出“未连接”警报并使用户感到困惑。

 [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));

        switch (status) {
            {case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"No Internet Connection");
                UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Not connected"
                                                                  message:@"You have no network connection"
                                                                 delegate:nil
                                                        cancelButtonTitle:@"OK"
                                                        otherButtonTitles:nil];

                [message show];
            }
                break;
            {case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI");


               }
                break;
            {case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"4G");
            }
                break;
            default:
                NSLog(@"Unkown network status");

                break;
        }
    }];
    [[AFNetworkReachabilityManager sharedManager]startMonitoring];

    if ([[AFNetworkReachabilityManager sharedManager] isReachable] == NO) {
        UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Not connected"
                                                          message:@"You're not connected to the internet. Please connect via WiFi or data plan"
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles:nil];
        [message show];

        //this shows all the time - why?
    }

2 个答案:

答案 0 :(得分:0)

将此代码放入此方法AppDelegate的{​​{1}}中。它只会显示一次消息。

didFinishLaunchingWithOptions

答案 1 :(得分:0)

因为AFNetworkReachabilityManager通过通知刷新其状态。 所以当你打电话时

[AFNetworkReachabilityManager sharedManager] isReachable]

立即启动监控后,状态尚未准备就绪。