Приложение для iPhone - обработка ошибок при общении с сервером - PullRequest
0 голосов
/ 26 октября 2010

Приложение iPhone постоянно связывается с веб-сервером. Таким образом, в случае потери соединения или недоступности сервера, какие конкретные меры предосторожности мы должны предпринять? Я знаю, что мы должны показать пользователю об ошибке связи. Если да, есть ли приемлемый способ показать ошибки пользователю? Я больше сконцентрировался на рекомендациях Apple, где я прочитал, что они отклоняют приложения из-за этой проблемы.

Спасибо,

С уважением,

Dilshan

Ответы [ 3 ]

1 голос
/ 26 октября 2010

Просто используйте класс Apple Reachability. Здесь - пример того, как его использовать, и вы можете получить класс из документации Apple здесь . Это все, что вам нужно, чтобы проверить достижимость и добавить прослушиватель в ваше приложение для обновления, если вы потеряете соединение с сервером.

Когда у вас есть класс Reachability в вашем проекте, все что вам нужно сделать, это примерно так:

//Change the host name here to change the server your monitoring

hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReach startNotifier];


internetReach = [[Reachability reachabilityForInternetConnection] retain];
[internetReach startNotifier];

wifiReach = [[Reachability reachabilityForLocalWiFi] retain];
[wifiReach startNotifier];

NetworkStatus netStatus = [internetReach currentReachabilityStatus];

if (netStatus == NotReachable){
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Network Connection Not Found" message:@"Need network connection present to operate."
                                                   delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}

Вам также понадобится метод, который срабатывает при изменении достижимости. Этот учебник объяснит, как это сделать, если вы не знакомы. Просто как тот. :)

1 голос
/ 27 октября 2010

Я обнаружил, что лучше просто попытаться подключиться к сети, чем проверять Reachability, так как Reachability может блокироваться на 20+ секунд при поиске DNS, и NSURLDownload иногда может вызвать сеть, если она не работает.

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

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

1 голос
/ 26 октября 2010

Вы должны проверить, доступен ли сервер перед отправкой запроса, и если произошла ошибка или сервер недоступен, вы можете показать UIAlertView, чтобы проинформировать пользователя.

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