Подтвердить что ты не робот

Предварительно заполнить автономный appcache HTML5 для UIWebView в приложении iOS

Возможно ли создать UIWebView с предварительно заполненным кэшем HTML5, чтобы он работал в автономном режиме, даже если пользователь впервые обращается к UIWebView?

Если да, то как?

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

Я ничего не вижу в документации.

4b9b3361

Ответ 1

Я думаю, что это может свести к вопросу о том, можете ли вы программно писать в кеш файл UIWebView (то есть, находится ли кеш UIWebView в изолированной программной среде вашего приложения) - если вы не можете, то игра закончится. Если возможно, тогда возникает вопрос о том, что произойдет после того, как вы сбросите предварительно заполненный файл кеша на место и будет ли UIWebView "обманут" в том, что он уже загрузил и кэшировал ваш контент HTML5.

Если вы используете iPhone Simulator для тестирования своего приложения, посмотрите ~/Library/Application Support/iPhone Simulator/5.0/Applications (замените "5.0" на версию iOS, если это необходимо). Вы должны увидеть длинную строку шестнадцатеричных цифр для каждого приложения, которое вы собрали в симуляторе; найдите тот, который соответствует вашему приложению, а затем загляните в подпапку Library/Caches/[your app identifier] для файла с именем Cache.db.

Это может быть место, где UIWebView хранит данные кэша. Если это не так, игра закончилась и ответ на ваш вопрос "нет, это невозможно". Если UIWebView кэширует данные, тогда может быть возможно заполнить этот файл Cache.db в симуляторе, захватить файл, сохранить его в вашем комплекте приложений и затем записать кеш в соответствующее место, введите кеш.

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

Ответ 2

То, что вы ищете, - это два файла в вашей папке с кешем.

ApplicationCache.db и cache.db

Они оба находятся в папке Библиотека/Кэш/[ваш идентификатор пакета] для вашего приложения, доступ к которой у вас есть. Вы можете добавить предварительно заполненные данные кеша к вам и просто скопировать его в папку кэшей при запуске приложения.

Кстати, вы можете играть с ними легко, так как они просты, SQLITE db.

Я надеюсь, что это поможет

Ответ 3

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

Если вы используете хром, это похоже на их стратегию, которую они используют, чтобы сделать серфинг немного быстрее: когда страница загружается, они сразу же находят все ссылки на странице и разрешают ссылки, поэтому, если пользователь нажимает на ссылку, они не вам не нужно ждать ответа от DNS-серверов, прежде чем просмотреть страницу, как это уже было сделано для них!

Надеюсь, это изменило смысл.

Цитата:

Это довольно крутой вопрос. рассмотрите только то, что указано в ссылке разработчика, поскольку Apple отклонит ваше приложение в противном случае. вы можете рассматривать "принудительную загрузку", что бы вы хотели, в скрытом виде, чтобы разогреть кеш. таким образом, у вас есть возможность добавлять элементы в кеш, но у вас нет возможности удалять элементы из кеша, если вы не знаете внутренних алгоритмов кеширования... Я бы сказал, что это меньше взломать и больше техники! - vinnybad 23 ноября в 17:26

@vinnybad: Я не совсем уверен, что вы подразумеваете под "принудительной загрузкой". Можете ли вы рассказать об этом? (Похоже, что, возможно, стоит вставить ответ, а не комментарий!) - Trott 23 ноября в 17:40