iPhone Web 应用程序 - 接听电话时 session 和当前 URL 丢失

标签 iphone web-applications iphone-web-app

我有一个多页面网站,旨在作为 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/

相关文章:

iphone - 图标没有出现在 Xcode 存档中?

java - Java webapp 中的 Groovy Web 控制台?

ios - iPad 网络应用程序,嵌入谷歌地图

iphone - 如何引导我的用户访问支持 iPhone 的网站?

iphone - tableView 作为半透明 View 中的 subview

ios - 核心蓝牙 :Disconnect peripheral Connection from application

iphone - 使用协议(protocol)进行跨类通信

web-applications - 瘦客户端应用程序是什么意思?

tomcat - 服务器崩溃的原因有哪些?

testing - 使用 Selenium 自动测试 UIWebView 内容