【问题标题】:iPhone Web App - Session & Current url lost when call answerediPhone Web App - 接听电话时会话和当前 url 丢失
【发布时间】:2011-12-01 09:43:41
【问题描述】:

我有一个多页网站,旨在用作 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 和当前会话值。

这是网络应用程序中的一个已知问题吗?有解决办法吗?

(我的一个想法是在本地 SQLite 数据库中维护会话和 url 值,但我不确定这是否是最好的方法)

【问题讨论】:

  • 我搜索了一下,因为我对这个话题很感兴趣。这似乎是 iPhone 上网络应用程序的一个限制,您必须围绕它编写代码。
  • 您找到解决问题的方法了吗?
  • 还没有,但 Will0 在下面的回答可能有效
  • 刚刚改了用户名;彼得指的是我的回答。

标签: iphone web-applications iphone-web-app


【解决方案1】:

诀窍是这样做:

// 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】:

    不要将登录信息存储在 $_SESSION 变量中,而是将其存储在 $_COOKIE 中。 cookie 将根据您设置的过期时间进行保存。只要他们“在”网络应用程序或常规网络版本(cookie 相同)“内部”登录,他们就不必每次或在两者之间切换时都登录。

    【讨论】:

      【解决方案3】:

      我在 iOS v10 下的 WebApp 遇到了同样的问题。这不是会话和/或 cookie 的问题(会话机制还可以,基于具有足够生命周期的 cookie)。

      问题是在 WebApp 模式下运行时(即从桌面快捷方式启动应用程序,而不是从 Safari 启动),切换到另一个应用程序(例如接听电话)时,“上下文”会丢失。当你回到应用程序时,请求的 URL 不是最后一个,而是保存到桌面快捷方式中的 URL...

      在我的情况下,快捷方式是从登录屏幕创建的,所以每次我从另一个应用程序切换回我的应用程序时,都会调用 /login URL...看起来我已注销...

      因此,请注意您的网络应用上的 URL 快捷方式。 此时,我还没有找到在用户创建快捷方式时指定特定 URL 的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2021-07-16
        • 2011-11-04
        • 1970-01-01
        • 2012-04-20
        • 2018-11-11
        相关资源
        最近更新 更多