IOS диагностирует состояние подключения к iphone - PullRequest
1 голос
/ 30 марта 2012

Я пытаюсь сделать приложение для iPhone более надежным, чтобы оно не зависало при отсутствии сетевого подключения.Прямо сейчас приложение пытается установить соединение при запуске немедленно через делегата приложения.У него нет проблем, если доступен Wi-Fi или сотовая связь, но он потерпит крах, если не будет видно сетевое соединение.Я осмотрел этот сайт и не нашел ничего подходящего для моей проблемы.У меня такое ощущение, что это должна быть просто простая строка кода, похожая на объективный эквивалент псевдо-isConnection, или что-то подобное:

if (isConnection) {
    - sendSynchronousRequest for json data I'm using
    - manipulate the data, etc., and continue with normal operations
} else {
    - send an output message to a view controller, 
      letting the user know what's wrong.
}

Я не могу выделить (по общему признанию абстрактное) условие "isConnection", которое я ищу, определенно.У кого-нибудь есть опыт или совет по этой теме?

Ответы [ 2 ]

0 голосов
/ 31 марта 2012

Класс достижимости очень прост в использовании. Загрузите файлы классов здесь https://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html

Вам также необходимо добавить SystemConfiguration.framework

Вот код, который вам нужен:

-(BOOL)isConnection {
    Reachability *reach = [Reachability reachabilityWithHostName:@"www.google.com"];
    //replace www.google.com with your own host you're checking for
    NetworkStatus hostStatus = [reach currentReachabilityStatus];
    if (hostStatus != NotReachable) {
        //There are also other status enums like
        //ReachableViaWiFi
        //ReachableViaWWAN (3G/LTE)
        //if you need to detect if user is on cellular, act accordingly
        return YES;
    }
    return NO;
}

Тогда вы можете вызвать свой метод:

if ([self isConnection]) {
    //do something
} else {
    //no connection, inform user
}
0 голосов
/ 30 марта 2012

Вы можете использовать класс Reachability, предоставляемый Apple в примере приложения Reachability . Он не только говорит вам, если вы подключены, но и как вы подключены (WiFi, сотовая связь или нет подключения вообще). Вы даже можете зарегистрироваться для получения уведомления об изменении состояния соединения.

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

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