Манифест автономного кэша игнорируется на iPhone

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

Почему изображения нет в автономном кеше?

Обновить

Теперь у меня есть действительный манифест кеша приложения, но на iPhone я случайно не получаю основное изображение, даже когда он в сети. У меня есть кнопка ручного обновления, которая обычно получает изображение со второй или третьей попытки, но когда я открываю приложение с главного экрана, у него есть '?' вместо этого заполнитель.

Обновить

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

  1. Полностью удален JavaScript - на странице просто отображается статическое изображение.

  2. Заменены все изображения на файлы менее 25кб

  3. Добавлен NETWORK: * в манифест

  4. Перемещено NETWORK: * над заголовком CACHE:.

  5. Пробовал переименовывать "manifest.appcache" в "cache.manifest"

Он работает в Firefox в автономном режиме с пустым дисковым кешем (т. е. чтобы убедиться, что он может использовать только автономный кеш!), но по-прежнему показывает страшный синий вопросительный знак на IOS (проверено на iPhone 4s).


person Fenton    schedule 24.06.2012    source источник


Ответы (2)


Похоже, ваш файл кеша недействителен из-за отсутствующих файлов. Попробуйте сделать свои пути относительными, например. Puzzle/page.png.

При запуске валидатора возникают следующие ошибки:

Line 3: Resource not found

http://www.stevefenton.co.uk/Puzzle/CACHE

Line 4: Resource not found

http://www.stevefenton.co.uk/index.html

Line 5: Resource not found

http://www.stevefenton.co.uk/apple-touch-icon.png

Line 6: Resource not found

http://www.stevefenton.co.uk/page.png

Line 7: Resource not found

http://www.stevefenton.co.uk/knight.png

Line 10: Resource not found

http://www.stevefenton.co.uk/style.css
person row1    schedule 24.06.2012
comment
+1 сразу за ссылку на валидатор! Я все еще получаю странный отсутствующий заполнитель изображения, когда загружаю домашний экран. - person Fenton; 24.06.2012
comment
У меня были похожие проблемы, но я не могу вспомнить, было ли это для Android или iOS. Что сработало для меня, так это добавление раздела CACHE:, а затем раздела NETWORK:. Ниже CACHE: поместите все свои файлы в кеш, а затем на новой строке ниже NETWORK: поместите *. - person row1; 25.06.2012
comment
это работает в сети, что решает половину проблемы, но когда нет связи, изображение отсутствует. - person Fenton; 25.06.2012

После долгих проб и ошибок я могу подтвердить, что решил проблему.

Ответ странный, но я дважды проверил, чтобы убедиться, что только одно это изменение вызывает появление/исчезновение проблемы.

Обычно рекомендуется использовать следующий метатег, если ваше приложение будет добавлено на главный экран IOS:

<meta name="apple-mobile-web-app-capable" content="yes">

Но на самом деле, не добавляйте это. Удаление этого тега из моего демонстрационного приложения мгновенно устранило проблему на IOS 5.1.1, поэтому вам нужно решить, ДОЛЖЕН ли у вас быть автономный кеш или у вас ДОЛЖЕН быть полноэкранный стиль, а не запуск в Safari.

person Fenton    schedule 26.06.2012
comment
что-то случилось, что это больше не работает? Потому что при отсутствии подключения к сети я получаю сообщение об ошибке, в котором говорится, что головоломка не может быть открыта, поскольку она не подключена к Интернету. (вот изображение) i.stack.imgur.com/iyhci.png - person SnowboardBruin; 08.10.2012