Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Адекватный контроль сетевого соединения 
:(
    Опции темы
Selestin
Дата 1.4.2013, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



Добрый день!

Подскажите, каким образом более правильно реализовать контроль сетевого соединения?

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

Суть вопроса вот в чем:
Этот таймер необходимо инициализировать в каждом view или же повесить при старте приложения, и уже оттуда обращаться к view, чтобы перекинуть юзера на первый экран?

Спасибо!
PM MAIL   Вверх
Bitter
Дата 1.4.2013, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Selestin, с таймером затея явно глупая. 
Для контроля соединения вам нужен класс Reachability. Его нет в SDK, но он есть в документации Apple вот тут (там же можно скачать пример с самим классом): http://developer.apple.com/library/ios/#sa...tion/Intro.html
Чтобы подключить его к проекту - надо скопировать файлы .m и .h в проект и добавить SystemConfiguration framework
PM MAIL ICQ Skype   Вверх
Selestin
Дата 1.4.2013, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



Как он работает мне понятно, спасибо.

Но мне необходимо давать "таймаут", для возможного восстановления соединения.
Тоесть мне нужно будет засекать, через этот фрейморк, сколько времени сеть лежит, получается таймером уже, и по истечении времени выводить на главный экран?
PM MAIL   Вверх
Bitter
Дата 1.4.2013, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



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

Что-то типа того

Код

- (void)checkNetworkStatus:(NSNotification *)notice{
    NetworkStatus internetStatus = [internetReach currentReachabilityStatus];
    switch (internetStatus){
        case NotReachable:{
            self.isAllowInternet = NO;
            dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, timeout * NSEC_PER_SEC);
            dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
                if (!self.isAllowInternet) {
                    // переход в нужное место
                }
            });
            break;
        }
    ...
}


Это сообщение отредактировал(а) Bitter - 1.4.2013, 10:30
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | iOS | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.