Тестирование интернет-соединения на iPad-приложении с помощью ios5 - PullRequest
2 голосов
/ 01 февраля 2012

Я искал по форуму, как проверить, есть ли интернет в моем приложении для iPad. Я только что создал простой проект веб-просмотра с другими контроллерами представления, и мне нужно отобразить сообщение UIAlert, когда Интернет недоступен. В моем случае это показывает сообщение, когда я запускаю приложение. Когда я запускаю приложение с интернетом и затем деактивирую интернет, оно не показывает сообщение UIAlert, то есть, если я переключаюсь между представлениями, оно больше не показывает отсутствие интернет-соединения.

Я следовал этому способу реализации в моем проекте: (извините, моя ошибка, это ссылка, по которой я следовал) http://mozymac.com/forums/f54/how-check-if-there-internet-connection-iphone-os-devices-595/ [Это новый отредактированный вопрос]

Кроме того, я рассмотрел некоторые из предыдущих вопросов на форуме Stackoverflow, например, например: Как проверить активное подключение к Интернету на iOS или OSX?

Но у каждого своя версия. Если у кого-то есть гораздо более обновленный метод для ios5, xcode 4.2.1 того, как этого добиться, будет для меня полезен.

Спасибо

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

Есть ли причина, по которой вы хотите проверить подключение к Интернету, прежде чем пытаться загрузить запрос в UIWebView?

Рекомендуется просто начать загрузку и использовать UIWebViewDelegate / NURLConnectionDelegate для проверки NSError, чтобы увидеть, что не так.В случае сбоя сети вы получите ошибку с доменом, равным <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html" rel="nofollow">NSURLErrorDomain</a>.Код ошибки укажет, в чем проблема, см. Перечисление <a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html" rel="nofollow">NSError codes</a>.

. И только после первой ошибки запустите свою доступность, чтобы увидеть, когда снова станет доступным интернет-соединение.Или проще, просто позвольте пользователю повторить попытку.

Использование кода Reachability фактически вызовет некоторые издержки.Требуется время, чтобы проверить, доступен ли Интернет, который вы могли бы просто использовать для установления фактического соединения.

Пример

Поскольку вы используете UIWebView, вы должны реализовать следующий метод делегата, чтобы получать уведомления об ошибках.

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    if (![[error domain] isEqualToString:NSURLErrorDomain]) {
        // not a nsurl error, take other appropriate action
        return;
    }

    NSInteger code = [error code];
    // show appropriate error to user, based on code
}

ВЭтот метод делегата вы должны делать все, что нужно для достижения того, что вы хотите.Вы можете повторить запрос самостоятельно, показать сообщение пользователю или начать прослушивать изменения достижимости, используя код из примера Reachability, предоставленного Apple.

1 голос
/ 01 февраля 2012

Лучший способ проверить подключение к Интернету - приложение Reachibility

ссылка

Или еще

+ (BOOL)isNetworkAvailable
{
    CFNetDiagnosticRef diag;        
    diag = CFNetDiagnosticCreateWithURL (NULL, (CFURLRef)[NSURL URLWithString:@"www.apple.com"]);

    CFNetDiagnosticStatus status;
    status = CFNetDiagnosticCopyNetworkStatusPassively (diag, NULL);        

    CFRelease (diag);

    if ( status == kCFNetDiagnosticConnectionUp )
    {
        //NSLog (@"Connection is up");
        return YES;
    } else {
        NSLog (@"Connection is down");
        return NO;
    }
}
1 голос
/ 01 февраля 2012

У Apple есть один, он называется Reachability.Вот ссылка на него.

http://developer.apple.com/library/ios/ipad/#samplecode/Reachability/Introduction/Intro.html

...