Приложение HTML5 офлайн на устройствах Android
Это касается офлайн-приложений HTML5 на устройствах Android.
Мы сталкиваемся с проблемой, когда закладка офлайн-совместимого приложения HTML5 (с полным файлом манифеста кэша) не загружается в браузере Android при следующих условиях:
- Закладка приложения в браузере
- Отключите все беспроводные подключения
- Закрыть браузер полностью
- Попытка запуска закладки с главного экрана
В результате мы получим сообщение "Невозможно подключиться к Интернету". Приложение отлично работает на устройствах iOS при сохранении на рабочем столе и в режиме полета.
Существует ли конкретный способ сохранения приложения или это особенность Android?
Ответы
Ответ 1
Я бы посмотрел, что:
- Тип MIME действительно
text/cache-manifest
.
- Кэш-манифест начинается с
CACHE MANIFEST
, ваши URL-адреса после этого либо относятся к манифестным, либо абсолютным URL-адресам.
- У вас нет каких-либо неработающих ссылок в вашем манифесте или принудительного тега
NETWORK:
.
Ответ 2
Итак, я столкнулся с подобными проблемами с chrome и android на нескольких экземплярах. По-видимому, нет никакой проблемы с реализацией, потому что я пробовал ее на FF, и она работала нормально, и то же самое было в отношении сафари. Единственное, что я предполагаю, это вызвано тем, что данные получают кеш для веб-страницы в ОЗУ при работе хрома. Если вы закроете браузер, и андроид завершит процесс, новый экземпляр chrome будет инициализирован, а ваши существующие данные приложения исчезнут. Я не могу это подтвердить, но, похоже, это может быть проблемой.
Также проверьте, что ваш сервер настроен для правильной отправки типа mime: Как настроить сервер для отправки правильных типов MIME
Ответ 3
Какое имя файла вашего кэша отображается? Я слышал, что расширение может повлиять на поведение Android. Убедитесь, что ваш файл заканчивается на .manifest
Кроме того, убедитесь, что ваш сервер правильно обслуживает тип MIME для файлов манифеста, который text/cache-manifest
Ответ 4
В дополнение к ответу Ben Max Rubinstein и Compid, если ваш URL-адрес приложения выглядит примерно так: example.com/myapp
вам нужно добавить следующую косую черту, например: example.com/myapp/
.
Когда вы находитесь в сети, сервер будет перенаправлять вас автоматически, но если вы находитесь в автономном режиме, очевидно, что этого не произойдет.
Ответ 5
То, с чем я столкнулся, состояло в том, что конфигурации .manifest
в конфигурации Apache mime.types
были правильно установлены на text/cache-manifest
, а затем несколько строк ниже были перезаписаны как application/x-ms-application
(для совместимости с MS 'ClickOnce thing). Чтобы решить эту проблему, я принял разное имя файла, а именно .cachemanifest
, правильно настроил его тип mime, перезапустил Apache, переименовал файл манифеста как cache.cachemanifest
, изменил my <html> чтобы указать на этот файл, а затем я, наконец, смог кэшировать мое веб-приложение на Android (в настольных браузерах не было никаких проблем, которые, по-видимому, не заботятся о типе файла манифеста mime). Надеюсь, это поможет.