Использовать частный API UIWebView?

Я хочу создать браузер, такой как Safari, с UIWebView, который может отображать ход загрузки веб-страницы. И я видел приложение Downloads Lite - Downloader & Download Manager, продающееся в магазине приложений (http://itunes.apple.com/app/id349275540?&mt=8), которое может это сделать. Он также может настроить пользовательский агент запроса, даже получить «тип контента» заголовка ответа, чтобы решить, нужно ли его загружать.

Но кажется, что это невозможно сделать с общедоступными API-интерфейсами UIWebView, поэтому мне интересно, как он это сделал. Не могли бы вы дать мне несколько советов по этому поводу?


person ShangKai    schedule 04.08.2011    source источник


Ответы (2)


Нет необходимости в частном API, чтобы делать такие вещи.

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

-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response
{
    [response expectedContentLength];
}

Затем вы просто сравниваете с объемом загруженных данных.

Настройка пользовательских агентов может быть выполнена с помощью CFNetwork framework.

person Nyx0uf    schedule 04.08.2011
comment
Ход загрузки веб-страницы — это ход загрузки всех ресурсов страницы. включить js css image iframe и т. д. это не прогресс загрузки кода html. - person ShangKai; 04.08.2011

взгляните на это приложение/блог: icab.de Общий подход состоит в том, чтобы создать подкласс NSProtocol и перехватить все запросы http/https, что даст вам все, что вы хотите.

person myeyesareblind    schedule 17.11.2011
comment
Не могли бы вы дать ссылку на блог? - person eeerahul; 17.11.2011