Краткий ответ? Вы не можете и не должны пытаться.
Когда устройство iOS ожидает данных с открытым подключением к вашему серверу, его сетевое оборудование (Wi-Fi или сотовая связь) включается, используя драгоценную батарею. По этой причине существуют ограничения на то, как долго вы сможете поддерживать аппаратное обеспечение горячим в ожидании поступления данных.
В вашем случае ваш сервер не отправляет ни одного байта данных более чем на целую минуту. Просто не разумно ожидать, что HTTP / HTTPS-запрос останется живым в течение такого длительного периода бездействия.
Кроме того, по сотовому соединению шансы фактического получения данных приближаются к нулю при увеличении длительности соединения, поскольку вы можете переключиться на другую вышку, переключиться с 3G на LTE или наоборот, испытать период значительной потери пакетов это вызывает сбой соединения и т. д. Таким образом, даже если бы это не было огромной тратой энергии батареи и огромной тратой общей пропускной способности сотовой вышки, все же не было бы особенно практичным для поддержания сотовой связи идет, пока не передается никаких данных.
Так что, если ваш сервер действительно работает в течение 60 с лишним секунд, не отправляя ни одного байта данных, вам необходимо полностью переосмыслить то, как вы работаете, и разделить запрос на два вызова:
- Генерация данных - Скажите серверу начать обработку данных, чтобы подготовить их к загрузке вашим приложением.
- Получить данные - спросите у сервера, готовы ли еще данные, и если да, извлеките их (и, при необходимости, очистите или выполните это с помощью отдельного запроса).
Сделайте первый запрос, затем периодически повторяйте второй запрос (скажем, раз в минуту), пока он не вернет данные.
Не забудьте добавить какой-нибудь серверный скрипт для очистки любых сгенерированных данных, которые не были востребованы по прошествии некоторого времени (день, неделя и т. Д.), Чтобы они не просто складывались вверх навсегда.
Если вы не ожидаете, что ваш сервер не будет отправлять какие-либо данные в течение такого длительного периода времени, вам следует потратить некоторое время на выяснение того, что не так на стороне сервера.