Потеря подключения к сети на iPhone - PullRequest
2 голосов
/ 22 мая 2009

Я разрабатываю сетевое приложение на iPhone, для которого требуется постоянное подключение к Интернету. Однако после того, как я войду на сервер и какое-то время не буду использовать iPhone, iPhone перейдет в спящий режим и отключит сетевое соединение (оно выходит из системы).

Если я запускаю то же приложение на iPhone, когда iPhone подключен к ПК через USB-кабель, он никогда не теряет свое сетевое соединение.

В файле info.plist я добавил эти два флага, но, похоже, не имеет никакого эффекта.

UIRequiresPersistentWifi -> true SBUsesNetwork - целое число -> 3

Я что-то упустил? Не могли бы вы сообщить мне, как я могу убедиться, что сетевое соединение постоянно в течение всего срока службы приложения?

Ответы [ 2 ]

4 голосов
/ 22 мая 2009

В делегате приложения ("appDelegate") отключите таймер простоя в методе +initialize:

myApp.idleTimerDisabled = YES;

Обратите внимание, что это будет держать ваш iPhone от сна, пока ваше приложение открыто. Это может вызвать проблемы с временем автономной работы.

Другим вариантом может быть настройка фонового потока, который открывает маленький CFStream по времени.

1 голос
/ 22 мая 2009

Что вы подразумеваете под "выписывает меня" здесь? На сетевом уровне нет входа в систему (*). Есть только пакеты. Вы отправляете их или нет. Так есть ли у вашего серверного процесса ожидание периодического поступления пакетов или сообщений? Если это так, то вы должны отправить их, а это значит, что вы не можете бездействовать (idleTimerDisabled = YES). Если вы управляете сервером, лучше сделать его менее требовательным к тому, как часто вы говорите с ним. Однако все это происходит намного выше сетевого уровня.

UIRequiresPersistentWifi означает, что радио Wi-Fi включено во время работы приложения, даже если вы не разговариваете по нему. Это важно для получения данных. В противном случае вы отключитесь от сети, и другие не смогут разговаривать с вами примерно через 30 минут. Он должен быть установлен в Info.plist, но это, безусловно, в вашем комплекте приложений. Если бы это было не так, ваше приложение не запустилось бы, так что это не проблема.

(*) В сотовой сети есть концепция входа в систему, но это не является причиной вашей проблемы.

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