Остановить перезагрузку веб-приложения, запущенного с главного экрана iPhone

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

Как предотвратить перезагрузку приложения iPhone?

У меня есть мета-тег apple-mobile-web-app, позволяющий скрыть панель инструментов Safari, и я не хочу ее отключать.

3 Solutions collect form web for “Остановить перезагрузку веб-приложения, запущенного с главного экрана iPhone”

Я только что нашел этот связанный вопрос на SO: остановите собственное веб-приложение, перезагрузив себя при открытии на iOS

Как представляется, это ограничение Safari, предлагаемое решение заключается в сохранении состояния веб-приложений с использованием Javascript и HTML5 localStorage. Когда ваше веб-приложение запущено, проверьте состояние и сохраните его, если оно доступно.

Вы можете прочитать об использовании localStorage в Safari здесь: http://developer.apple.com/library/safari/#documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007256-CH1 -SW1

Надеюсь, что это поможет тебе. По крайней мере, это было для меня, поскольку у меня была такая же проблема, как и вы. 🙂


Обновление : хотя мой ответ закрыт, я думаю, что это самый простой способ справиться с принудительной перезагрузкой iOS. Моя стратегия не останавливает веб-приложение от повторной загрузки при открытии, но это дает вам простой способ сохранить сеанс в активном состоянии, чтобы вы могли обнаруживать и восстанавливать сеанс со стороны сервера, чтобы поток приложений не был (по просьбе ОП).

NB; это работает проще всего, если к страницам вашего веб-приложения всегда обращаются по одному URL-адресу (например, http://webapp.yourdomain.com/index.php ); если нет, вам нужно будет сохранить местоположение пользователя в данных сеанса на стороне сервера и перенаправить пользователя туда, когда он войдет в ваше веб-приложение по основному URL-адресу.

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


Простым решением является продление срока действия вашего cookie сеанса. Это работает через веб-приложения (при условии, что они указывают на одну и ту же страницу, конечно) и даже между веб-приложением и обычной веб-версией приложения.

Локальное решение для хранения данных не требуется, поскольку вся логика остается на стороне сервера, и это даже работает между перезагрузкой устройства. Запрос HTML по-прежнему выполняется каждый раз, когда открывается веб-приложение, но без нарушения потока приложений, потому что сервер просто обслуживает тот же контент, что и пользователь, прежде чем он покинет веб-приложение.

Хитрость заключается в том, чтобы сделать это:

// Start or resume session session_start(); // Extend cookie life time by an amount of your liking $cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds setcookie(session_name(),session_id(),time()+$cookieLifetime); 

Для более подробного обсуждения этой стратегии вы можете взглянуть на мой ответ на этот вопрос:

Поддерживать сеанс PHP в веб-приложении на iPhone

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

Таким образом, ваш лучший подход заключается в минимизации проблем, возникающих при этой перезагрузке. Убедитесь, что ваш webapp обновляет URL-адрес при переходе из представления в режим просмотра, либо путем изменения location.hash либо используя history.pushState() . Это позволит вам перезагрузить любой вид, который был включен пользователем, прежде чем переключать приложения. Существуют события со pagehide и событиями, которые позволяют вам выполнять код, когда пользователь удаляется от вашего приложения, – воспользуйтесь этой возможностью для хранения локального состояния в localStorage и / или IndexedDB, а затем снова извлеките эти данные при повторном открытии webapp.

  • Используйте скрытый SFSafariViewController для получения файлов cookie Safari.
  • Как отключить масштабирование видового экрана в Mobile Safari?
  • Почему SFSafariWebViewController не использует файлы cookie с Safari?
  • iOS Safari обнаруживает, когда пользователь нажимает кнопку «Готово» в основном проигрывателе
  • сдвиг слайдов angularjs на сафари ios 9
  • Можно ли использовать indexedDB в приложении IOS кордовы?
  • iOS Webkit игнорирует медиа-запросы
  • Проблемы с отображением PDF в iFrame на Mobile Safari
  • Альтернативы jQuery Mobile для мобильных веб-приложений? Zepto, XUI, что еще?
  • Отключить эффект вертикального отражения в веб-приложении ipad
  • iOS UIWebView: отключить это (уменьшение), но активировать масштаб
  • Interesting Posts

    Безопасное изменение текста UITextField на символ (*) asterisk

    Обнаружение касания на MK ANNOTATION

    AVURLAsset отказывается загружать видео

    Как урезать значения CGFloat?

    UIImageView как callout's leftCalloutAccessoryView автоматически перемещает верхний левый угол

    добавить кнопку в uitextfield

    Использование Tesseract для OCR дает утечку памяти методу GetUTF8Text

    Пользовательский фон на UITabBarItem не установлен на втором кране

    Рисование строки с помощью SKShapeNode

    Динамическая высота для ячеек таблицы с изображениями с асинхронной загрузкой

    Практическое руководство. Локальное видео MP4 в качестве фона в приложении для iOS. C iOS 8

    Интеграция iOS PayPal с привязкой к бэкэндовому соединению

    Проверьте, что NSString содержит только буквенно-цифровые + символы подчеркивания

    Чтение файла Localization.strings из * .ipa

    Обновление приложения к приложению AppStore из бета-приложения TestFlight

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.