Веб-браузер Ttitanium и кеш приложений HTML5

Я использую Titanium для создания приложения для Android. Приложение использует webview для загрузки внешних веб-страниц HTML5. Веб-страница использует манифест для кэширования страницы и некоторых ресурсов. Это прекрасно работает в браузерах настольных компьютеров и сторонних приложений в Android (Chrome).

Когда я просматриваю страницу в веб-просмотре в приложении сборки Titanium, кажется, что манифест не используется, страница просто загружает все с сервера. Та же проблема возникает, когда я использую встроенный браузер моего телефона (HTC one X).

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

файл манифеста:

CACHE MANIFEST
# version 1 

leerlingen.html
jquery.js
style.css
handler.js

NETWORK:
*

2 ответа

Решение

На тот случай, если кто-то еще сталкивается с теми же проблемами, с которыми я столкнулся, вот что я сделал. Кеш приложений HTML5, похоже, не работает во встроенном браузере Android и с этим веб-просмотры. В Titanium, похоже, нет способа управлять веб-обзором, чтобы включить кеш приложения.

Обходной путь для меня заключался в том, чтобы использовать Titanium и его функцию httpClient (Titanium.Network.HTTPClient) для запроса файлов (HTML, CSS, javascript) и сохранять их в локальной файловой системе приложения (Titanium.Filesystem).

Первое: Titanium предоставляет гораздо больше, чем WebView. Если вы планируете отображать только веб-страницы, вам, возможно, стоит взглянуть на PhoneGap / Cordova, который может лучше соответствовать вашим потребностям.


Как вы заметили, не все браузеры поддерживают функцию кэширования HTML5, как ожидалось. Я не могу сказать, работает ли он для Android в целом или только для вашей конкретной версии, потому что WebKit обычно поддерживает его, но это зависит от используемой версии WebKit. И это может быть по-другому.

РЕДАКТИРОВАТЬ: Кажется, что (на родном Android) эта функция может быть включена, как написано здесь: Кэш приложения в HTML5 не работает в приложении Android PhoneGap. В настоящее время это невозможно в Titanium (могут быть неофициальные изменения, о которых я не знаю, но на http://docs.appcelerator.com/ это невозможно).

Лично я бы предпочел другое решение. Кэшируйте данные самостоятельно и отображайте их, если нет сетевого подключения. Но это зависит от того, чего вы пытаетесь достичь. Имея немного контента, который не часто меняется, это имело бы смысл. Имея динамически изменяемые данные (например, поток Twitter), это будет трудно. Также это зависит от ваших пользователей и того, где они хотят получить доступ к вашему приложению.

И есть открытый вопрос: когда вы хотите использовать все функции кэширования, зачем создавать приложение? Создание простой мобильной веб-страницы сделало бы то же самое. При создании приложения я бы не использовал функции кэширования HTML 5. Вы должны сохранить все статические ресурсы в своем приложении и просто загружать данные из сети. Это может быть достигнуто как Titanium, так и PhoneGap / Cordova. Titanium более полезен для собственного интерфейса и некоторых собственных функций, в то время как PhoneGap / Cordova больше подходит для макета на основе HTML5.

Другие вопросы по тегам