iOS / iPhone SDK: есть ли событие, когда сеть теряется / возвращается? - PullRequest
3 голосов
/ 13 января 2012

Я хотел бы провести некоторую обработку, когда я теряю соединение и когда соединение возвращается.Есть ли какие-либо события, чтобы справиться с этим?

Заранее спасибо,

E.

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Одним из стандартных подходов является использование Достижимость для проверки доступности сети. Его можно скачать здесь . В вашем проекте вам нужны только Reachability.h и Reachability.m.

Мое личное предпочтение - сделать следующее -

1 Добавить файлы достижимости

2 Создайте свойства BOOL для каждого сетевого теста, который вы хотите запомнить / выставить в своем проекте. У меня есть тест для Google и тест для карт Google ниже.

3 В вашем методе appDidFinishLoading вызовите [self assertainNetworkReachability].

#pragma mark -
#pragma mark Reachability

-(void)assertainNetworkReachability {
    [self performSelectorInBackground:@selector(backgroundReachabilityTests)  withObject:nil];
}

-(void)backgroundReachabilityTests {

    self.isInternetReachable = [self internetReachable];
    self.isMapsReachable = [self mapsReachable];

    self.connectivityTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self     selector:@selector(backgroundReachabilityTests) userInfo:nil repeats:NO];
}

-(BOOL)hostReachable:(NSString*)host {
    Reachability *r = [Reachability reachabilityWithHostName:host];
    NetworkStatus internetStatus = [r currentReachabilityStatus];
    if(internetStatus == NotReachable) {
        [self throwNetworkDiagnosisAlert];
        return NO;
    }
    return YES;
}

-(BOOL)internetReachable {
    return [self hostReachable:@"www.google.co.uk"];
}

-(BOOL)mapsReachable {
    return [self hostReachable:@"maps.google.com"];
}

-(BOOL)isInternetGoodYetMapsUnreachable {
    return (self.isInternetReachable && !self.isMapsReachable);
}

-(void)throwNetworkDiagnosisAlert {
    NSString* title = @"Connectivity Problem";
    NSString* message = @"You are not connected to the internet.";

    if (self.isInternetGoodYetMapsUnreachable) {
        message = @"Unable to connect to the Google Maps server.";
    }

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
0 голосов
/ 13 января 2012

Вы должны использовать передовые методы, используемые в ASIHTTPRequest . Они используют Достижимость , что, как говорится, означает сокращение числа замен классу Apple Я надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...