Автономное веб-приложение для iOS: загружает мой манифест, но не работает в автономном режиме - PullRequest
73 голосов
/ 06 декабря 2010

Я пишу веб-приложение для использования в автономном режиме на iOS. Я создал манифест, представляю его как text/cache-manifest, и он обычно работает нормально при работе в Safari.

Если я добавлю его в качестве приложения на домашний экран, а затем включу режим «В самолете», приложение вообще не сможет его открыть - я получаю сообщение об ошибке и предлагает закрыть приложение. (Я думал, что это было целью автономного приложения!)

  • Когда я загружаю приложение в первый раз, когда в сети, я вижу в своих журналах, что оно запрашивает каждую страницу, указанную в манифесте.

  • Если я отключу режим «В самолете» и загрузлю приложение, я увижу первый запрашиваемый файл - мой файл main.html (который указан в манифесте и имеет атрибут manifest=...). Затем он запрашивает манифест и все мои другие файлы, получая 200 для всех (и 304 для всего, что было запрошено во второй раз во время этой загрузки).

  • Когда я загружаю страницу в Chrome и щелкаю по ней, журналы показывают, что единственное, чего он пытается достичь на сервере, это "/favicon.ico" (это 404, а я этого не делаю думаю iOS Safari пытается загрузить, во всяком случае). Все файлы, перечисленные в манифесте, действительны и обслужены без ошибок.

  • Инспектор Chrome в разделе «Кэш приложения» перечисляет все кэшированные файлы, которые я перечислил, и которые я ожидаю. Весь набор файлов занимает около 50 КБ, что намного меньше любого найденного мной автономного ресурса.

Должно ли это работать, то есть я должен иметь возможность создавать автономные приложения для iOS, используя только HTML / CSS / JS? И где я могу выяснить, почему он не работает в автономном режиме?

(Связано, но звучит для меня не совсем так, поскольку речь идет о Safari, а не об отдельном приложении: " Невозможно заставить веб-приложение работать в автономном режиме на iPod ")

Ответы [ 13 ]

1 голос
/ 16 марта 2011

Я столкнулся с той же проблемой сегодня на iOS 4.3.Я смог решить проблему, добавив файл favicon.ico и добавив его в манифест.

1 голос
/ 15 марта 2011

У меня есть один потенциальный обходной путь для этого - это кажется немного сумасшедшим, но здесь идет ... Я много работаю с cache.manifest и полноэкранными приложениями (вот тест, если вам нужно: http://www.mrspeaker.net/2010/07/12/argy-bargy/- добавьте на домашний экран, затем включите режим полета, и он запустится - по крайней мере, начиная с iOS 4.2.1)

Одна странная вещь, которую я обнаружил, заключается в том, что иногда кажется, что какая-то «мета» информация в файлахможет испортить их из-за кеширования - Вы когда-нибудь замечали, что в bash, если вы делаете "ls", некоторые файлы (в зависимости от ваших настроек цвета) подсвечиваются без видимой причины?Файлы могут иметь метаданные, которые операционная система (я думаю) добавляет автоматически - и есть способы удалить их ... Я не могу вспомнить, почему, но вот еще несколько деталей: Удаление метаданных из файлов в Snow Leopard

После того, как однажды вырвал мои волосы - и отказался сдаваться, потому что я знал, что это ДОЛЖНО сработать ... Chrome говорил, что он загрузил все файлы, но закончил с общей ошибкой.В конце я воссоздал структуру проекта с пустыми файлами и скопировал / вставил содержимое.Сработало - начал кешировать как положено!

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

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

Фу.В любом случае, рад, что мне нужно где-то записать это ...

[ОБНОВЛЕНИЕ: месяцы и месяцы спустя - я не смог воспроизвести это, поэтому я не думаю, что это метаданные]

1 голос
/ 05 января 2011

У меня есть несколько работающих автономных и включенных / отключенных веб-приложений.

Когда я отключаю режим аэропорта, я получаю запрос на манифест и некоторые другие файлы.

Я не получаю запросы на изображения, JavaScript, CSS или кэшированные файлы AJAX.

Если вы видите запросы на ваши ресурсы, IOS не кэширует их.

Safari в целом более требователен к манифестам.

Я предлагаю вам попробовать Safari на вашем компьютере.

...