Есть ли причина, по которой вы хотите проверить подключение к Интернету, прежде чем пытаться загрузить запрос в 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.