Чтобы быть ясным, кэширование веб-приложений IS и работает в офлайн-режиме в Mobile Safari.
Проблема заключается в том, что она добавляется на главный экран iPhone 4s и iPad 2, работающих под управлением iOS 6.0.1. Он не будет работать в автономном режиме и даст сетевую ошибку для подключения к Интернету, то есть "Невозможно открыть MYWEBAPP. MYWEBAPP не может быть открыт, потому что он не подключен к Интернету"
Я отлаживал это несколько часов и не могу найти решение. Я не получаю никаких ошибок в консоли, и я запускаю Jonathan Stark отладочный код
Я тестировал приложение на настольных инструментах Safari, Chrome и Firefox как в режиме онлайн, так и в автономном режиме. Также как веб-инспектор с устройствами в Safari. Результат такой же на iPhone или iPad. Они оба кэшируют веб-приложение и будут работать в Mobile Safari, но не при добавлении на главный экран. Нет ошибок в автономном режиме или в режиме онлайн.
Насколько я знаю, я использую лучшие практики:
-
Добавлен заголовок HTML:
<html manifest="photo.appcache">
Я также экспериментировал с использованием разных имен для файла манифеста, включая: cache.manifest и offline.manifest, поскольку я читал, что это имеет значение, но при моем тестировании не имеет значения, какое имя указано до тех пор, пока расширения являются .manifest или .appcache и соответствующим образом обслуживаются в файле .htaccess.
-
Добавлены правильные типы MIME:
AddType text/cache-manifest appcache manifest
Я также пробовал:
AddType text/cache.manifest manifest
,AddType text/cache.manifest .manifest manifest
,AddType text/cache-manifest .manifest
Я не считаю, что это сработало:
AddType text/cache.manifest
но я не помню. По большей части это не имело значения, и я придерживался:AddType text/cache-manifest appcache manifest
как это было в Mobile Boilerplate HTML5.
-
Добавлено:
СЕТЬ: *
в файл appcache. Я считаю, что это позволяет загружать все, а также делать все ссылки.
- Я попытался удалить эту строку:
<meta name="apple-mobile-web-app-capable" content="yes">
потому что я читаю здесь, на SO, что решает проблему, похожую на мою, но я могу подтвердить, что она не работает в моем тестировании. Удаление этой строки или настройка содержимого на "нет" при нажатии на значок главного экрана будет перенаправляться на Mobile Safari, а не на полноэкранный режим.
Я в значительной степени сузил его до того, что это ошибка в iOS 6 (я фактически использую iOS 6.0.1), потому что я знаю, что данные теперь разделены для веб-приложений в браузере, а те, которые добавлены в на главном экране. Я размещаю эту проблему здесь, чтобы узнать, столкнулись ли другие разработчики с той же проблемой.