网络请求期间无法使用Wifi

时间:2014-11-13 08:47:57

标签: ios objective-c afnetworking-2

我使用AFNetowrking同步调用Web服务。例如,我正在上传一些数据到服务器,而上传的wifi已经用完。我怎么知道wifi不可用并取消请求?

2 个答案:

答案 0 :(得分:1)

我不知道您是否使用过Reachability类。但如果没有使用,则在下面的Apple示例代码中给出。

Reachability Introduction

在项目中包含这些类。现在,在AppDelegate.m文件的帮助下,您可以跟踪网络的可用性。

didFinishLaunchingWithOptions:方法中添加通知观察者。这将通知网络更改。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{        
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityDidChange:) name:kReachabilityChangedNotification object:nil];
}

当主机连接或网络连接发生任何变化时,通知方法将会调用。

- (void)reachabilityDidChange:(NSNotification *)notification {

    Reachability *reachability = (Reachability *)[notification object];
    NetworkStatus internetStatus = [reachability currentReachabilityStatus];

    switch (internetStatus) {
        case NotReachable: {
            NSLog(@"The internet is down.");
            break;
        }

        case ReachableViaWiFi: {
            NSLog(@"The internet is working via WIFI.");
            break;
        }

        case ReachableViaWWAN: {
            NSLog(@"The internet is working via WWAN.");
            break;
        }
    }

    NetworkStatus hostStatus = [reachability currentReachabilityStatus];

    switch (hostStatus) {
        case NotReachable: {
            NSLog(@"A gateway to the host server is down.");
            break;
        }

        case ReachableViaWiFi: {
            NSLog(@"A gateway to the host server is working via WIFI.");
            break;
        }

        case ReachableViaWWAN: {
            NSLog(@"A gateway to the host server is working via WWAN.");
            break;
        }
    }
}
当您失去连接时,

取消NSURLConnection请求。

要取消请求,请使用- (void)cancel;的{​​{1}}方法。

答案 1 :(得分:0)

重新启动请求,直到WiFi再次活动,该怎么办?

试试这个cocoapod:https://github.com/shaioz/AFNetworking-AutoRetry