2013-04-08 2 views
7

У меня есть простое веб-приложение, созданное с помощью Phonegap и Android, которые вызывают внешние ресурсы (js, css, html) с сервера, вместо того, чтобы хранить их в папке с папками Phonegap. Я предпочитаю использовать внешние ресурсы, потому что мой сервер может доставлять html-страницы, требующие интернационализации.HTML5 Android Phonegap Веб-приложение, не работающее в автономном режиме с манифестами кэша

Это веб-приложение прекрасно работает на моем устройстве Android, когда WIFI включен, но он не работает при остановке WIFI. Мой файл index.html, поставляемый моим сервером, содержит действительный файл манифеста с правильным типом mimetype ('text/cache-manifest'), в котором перечислены все файлы, которые необходимо использовать приложению.

Моего Android класс активности должен иметь кэширования позволяет:

this.appView.getSettings().setDomStorageEnabled(true); 
    this.appView.getSettings().setAppCacheMaxSize(1024 * 1024 * 15); 

    String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); 
    this.appView.getSettings().setAppCachePath(appCachePath); 
    this.appView.getSettings().setAllowFileAccess(true); 
    this.appView.getSettings().setAppCacheEnabled(true); 

Это может стоит mentionning, что мое приложение использовать AJAX вызов с URL, как/AAA/В/вызвать веб-страницу с сервера, и я не» t знаю, может ли это быть проблемой (я не вызываю физические страницы напрямую, как index.html) ... Тем не менее, это веб-приложение хорошо работает в браузере рабочего стола (Google Chrome) в автономном режиме ...

Любая идея что еще я могу сделать, чтобы включить эту функцию кеша HTML5 в моем приложении Phonegap?

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

ответ

6

После игры вокруг некоторое время я получить его на работу. Вот некоторые моменты, вы должны проверять, когда stucked с этим типом проблемы кэширования:

  • Заботьтесь о параметрах URL-адресов, передаваемых с помощью метода GET ... Я проходил параметры при переходе между страницами моего приложения и этими параметрами делали мои URL-адреса отличаются от тех, которые в файле манифеста делают кеш, чтобы сбой.
  • При тестировании автономного режима на моем телефоне я только закрыл WIFI, думая, что этого достаточно, чтобы вызвать кэшированную версию моего приложения, но это было не так ... Когда я тестировал свое приложение, опубликованное под локальной сетью IP (например, 192.168.2.11), похоже, что мое приложение пыталось достичь этого IP-адреса через сеть 3G, которая все еще была включена ... Поэтому используйте режим самолета при тестировании в автономном режиме.
  • Не уверен, что это было необходимо, поскольку я читал его на некоторых других потоках, но я переименовал свой файл манифеста в cache.manifest.

С уважением

1

Видимо вам нужно «чтобы исправить Android Shell родное приложение, чтобы включить кэширование HTML5».

Если вы еще не сделали, пожалуйста, проверьте:

http://tmkmobile.wordpress.com/2012/03/04/html5-offline-solution/

+0

Спасибо, но это уже сделано ... Вы можете увидеть исправление в моем вопросе –

1

Я занимаюсь разработкой аналогичной системы. Я сделал, что создал веб-страницы Phonegap и сохранил их в папке www моего сервера WAMP. Тогда я делаю это в основном super.LoadURL ("insert_ip_address_here/insert_name_of_folder_where_webpage_is_located") в методе onCreate, и он отлично загружает приложение phonegap (да, все, что вам нужно, это всего лишь строка кода в самом приложении Android). Однако вы все равно должны убедиться, что config.xml, манифест и все конфигурации, необходимые для телефонной разблокировки, выполнены правильно (инструкции по этому поводу см. В разделе http://www.google.ca/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CEAQFjAA&url=http%3A%2F%2Fwww.adobe.com%2Fdevnet%2Fhtml5%2Farticles%2Fgetting-started-with-phonegap-in-eclipse-for-android.html&ei=XfBuUcmKNu684AP3vYDQBw&usg=AFQjCNG16oUTDylMqz20YiiMZTlDxrfbPg&bvm=bv.45368065,d.dmg).

Сообщите мне, если это путь, который вы решили преследовать. Я могу предоставить дополнительную поддержку с такими вещами, как создание ip-адреса (в строке super.loadurl (...)) динамический для локальной системы с использованием многолистового и т. Д.

+0

Да, это в основном то, что я делаю, я вызываю свой удаленный index.html с помощью super.LoadURL (мой http-url) в onCreate метод. Если вы проверите мой вопрос, я также определю различные настройки, чтобы включить кеширование в этом же методе ... –

+0

Интересно, будет ли кеширование ускорить приложение? (Я думаю о внедрении его в свой собственный код). – aagarwal

Смежные вопросы