我有一个多页网站,旨在作为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在页面之间导航,只是标准锚链接和页面重新加载(我知道web-apps的标准方法是使用类似Sencha的界面)。 / p>
从iPhone主屏幕启动时效果非常好,其效果与通过Safari浏览时相同。
但是,如果在会话期间接听电话,似乎会出现问题。
一旦通话完成,iPhone(本例中为版本4)将恢复为网络应用程序,但不会恢复之前查看的页面,而是重新加载主屏幕(网页时加载的同一页面)应用已启动)
在Safari中查看网站并接受呼叫时,它不会执行此操作并维护网址和当前会话值。
这是网络应用中的已知问题吗?有解决方法吗?
(我的一个想法是在本地SQLite数据库中维护会话和url值,但我不确定这是否是最好的方法)
答案 0 :(得分:0)
不是将登录信息存储在$ _SESSION变量中,而是将其存储在$ _COOKIE中。将根据您将其设置为过期时保存cookie。只要他们登录“内部”Web应用程序或常规Web版本(以及cookie相同),他们就不必每次登录或在两者之间切换时都会登录。
答案 1 :(得分:0)
诀窍是这样做:
// 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上工作。关闭并重新启动设备后,会话甚至会恢复。
有关此策略的更详细讨论,您可以查看我对此问题的回答: Maintain PHP Session in web app on iPhone
答案 2 :(得分:0)
我在iOS v10下的WebApp遇到了同样的问题。这不是会话和/或cookie的问题(会话机制可以,基于具有足够生命周期的cookie)。
问题是在WebApp模式下运行(即从桌面快捷方式启动应用程序,而不是在Safari中运行),&#34; context&#34;切换到另一个应用程序时丢失(例如接听电话)。当您返回应用程序时,请求的URL不是最后一个,但它是保存在桌面快捷方式中的URL ...
在我的情况下,快捷方式是从登录屏幕进行的,因此每次我从另一个应用程序切换回我的应用程序时,都会调用/登录的URL ...看起来我已经注销... < / p>
因此请注意网络应用中的网址快捷方式。 此时,我还没有找到一种在用户创建快捷方式时指定特定URL的方法。