NSURLSession установил тайм-аут запроса точно - PullRequest
0 голосов
/ 30 октября 2019

Мы устанавливаем интервал ожидания для запроса на NSMutableURLRequest timeoutInterval. Как описано в документе Apple, он определяет ограничение между пакетами , а не весь запрос. Когда мы анализируем наши журналы запросов, некоторые запросы превышают время ожидания, которое мы установили в timeoutInterval. Нам нужно точное время ожидания запросов.

При чтении документов и блогов свойство timeoutIntervalForRequest в NSURLSessionConfiguration совпадает с timeoutInterval. Но свойство timeoutIntervalForResource, кажется, соответствует нашему требованию.

Однако, Mattt говорит в objc.io , что timeoutIntervalForResource " действительно должен использоваться толькодля фоновых переводов". Можно ли использовать его в обычном запросе? Например, запросить информацию о пользователе. Это уместно в этой ситуации?

Большое спасибо.

1 Ответ

0 голосов
/ 05 ноября 2019

Это можно использовать, но это редко имеет смысл.

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

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

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

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

...