Веб-приложение для iPhone - сеанс и текущий URL теряются при ответе на звонок - PullRequest
3 голосов
/ 05 октября 2011

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

Он имеет обычное значение:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="apple-touch-startup-image" href="/images/startup.png" /> 

Сайт не используетSencha или Javascript для навигации между страницами, только стандартные ссылки привязки и перезагрузки страниц (я знаю, что стандартный подход к веб-приложениям - это использование интерфейса, подобного Sencha).

Работает отличнопри запуске с домашнего экрана iPhone и работает так же, как при просмотре через Safari.

Похоже, что проблема возникает при ответе на телефонный звонок в середине сеанса.

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

При просмотре сайта в Safari и принятии вызова он этого не делает и сохраняет значения URL и текущего сеанса.

Это известная проблема в Интернете-Программы?Есть ли обходной путь?

(у меня есть идея сохранить значения сеанса и URL в локальной базе данных SQLite, но я не уверен, что это лучший подход)

Ответы [ 3 ]

0 голосов
/ 30 января 2013

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

// 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);

Я протестировал это для работы на iOS 4.2.1, 5.1.1, 6.0 и 6.1.Сеанс даже восстанавливается после выключения и перезапуска устройства.

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

0 голосов
/ 20 июня 2017

У меня была такая же проблема с моим WebApp под iOS v10.Это не было проблемой сеанса и / или файла cookie (механизм сеанса был в порядке, основанный на файле cookie с достаточным временем жизни).

Проблема заключается в работе в режиме WebApp (т.е. запуск приложения из ярлыка на рабочем столе, а нев Safari) «контекст» теряется при переключении на другое приложение (например, ответ на вызов).Когда вы возвращаетесь в приложение, запрошенный URL-адрес не последний, но это URL-адрес, сохраненный в ярлыке на рабочем столе ...

В моем случае ярлык был создан на экране входа в систему, поэтомукаждый раз, когда я возвращался к своему приложению из другого приложения, это был URL / login, называемый ... Похоже, я вышел из системы ...

Так что будьте осторожны с ярлыком URL в вашем веб-приложении.На данный момент я не нашел способа указать конкретный URL, когда пользователь создает ярлык.

0 голосов
/ 10 марта 2012

Вместо сохранения информации для входа в систему в переменной $ _SESSION, сохраните ее в переменной $ _COOKIE. Файл cookie будет сохранен в зависимости от того, когда вы установите его срок действия. Пока они входят в систему «внутри» веб-приложения или обычной веб-версии (и файл cookie одинаков), им не придется входить в систему каждый раз или при переключении между ними.

...