我有一个多页面网站,旨在作为 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 在页面之间导航,仅使用标准 anchor 链接和页面重新加载(我知道网络应用程序的标准方法是使用类似 Sencha 的界面)。
从 iPhone 主屏幕启动时效果非常好,并且与通过 Safari 查看时的效果相同。
但是,当 session 中途接听电话时,似乎会出现问题。
通话完成后,iPhone(本例中为版本 4)将恢复到网络应用程序,但不会恢复之前查看的页面,而是重新加载主屏幕(与网络应用程序加载时加载的页面相同)。应用程序已启动)
在 Safari 中查看网站并接受调用时,它不会执行此操作,而是会保留 URL 和当前 session 值。
这是网络应用程序中的已知问题吗?有解决办法吗?
(我的一个想法是在本地 SQLite 数据库中维护 session 和 url 值,但我不确定这是否是最好的方法)
最佳答案
诀窍是这样做:
// 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 上的工作情况。关闭并重新启动设备后, session 甚至会恢复。
要更详细地讨论此策略,您可以查看我对此问题的回答: Maintain PHP Session in web app on iPhone
关于iPhone Web 应用程序 - 接听电话时 session 和当前 URL 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7660434/