Во-первых, это ошибка. Пожалуйста, отправьте его на bugreport.apple.com. Тайм-аут не следует игнорировать, как это. Конечно, есть хороший шанс, что это проблема управления питанием, и она не будет устранена, поэтому я не буду задерживать дыхание.
Во-вторых, вы подходите к проблеме таким образом, что гарантированно вызовет проблемы, даже если ошибка тайм-аута была исправлена. Тот факт, что ваш сервер не отправляет обратно ни одного байта, чтобы поддерживать соединение, является, конечно, причиной, по которой устройство iOS отключается, но даже если вы измените это и заставите его отправлять поддельный заголовок по одному байту за раз каждый пять секунд, пока данные не будут готовы, у вас все еще будут проблемы.
По сути, на мобильном устройстве вы действительно не должны по какой-либо причине держать удаленное соединение открытым для удаленного сервера. Это приводит к значительному расходу батареи, чтобы постоянно поддерживать радио Wi-Fi, а тем более сотовую радиосвязь, и, что еще хуже, такое соединение может прерваться в любое время, когда пользователь выходит из зоны действия, переключает сотовые станции или иным образом теряет связь. Сети дерьмовые - сотовые сети вдвойне.
Гораздо лучший подход для длительной обработки на сервере - сделать это асинхронно:
- Сделайте запрос к серверу.
- Пусть сервер отправит вам обратно уникальный идентификатор, связанный с запросом, и, при необходимости, приблизительное время завершения.
- Дождитесь приблизительного времени завершения, затем спросите сервер, как идут дела (предоставив этот уникальный идентификатор).
- Продолжайте периодически опрашивать сервер, пока сервер не сообщит, что задание выполнено (или не выполнено).
- Когда сервер сообщает, что задача выполнена, выполните запрос на получение результатов, а затем запрос на освобождение завершенных результатов.
- Периодически очищать старые, не собранные результаты на сервере с помощью задания cron или аналогичного.
Такой подход позволяет избежать держать радио горячим в течение нескольких секунд по обе стороны от ваших запросов избирательных исключением, и это делает проблему тайм-аут полностью спорный.