【问题标题】:Prevent web app restart on iPad task switch防止在 iPad 任务切换上重启 Web 应用程序
【发布时间】:2011-07-20 08:58:37
【问题描述】:

我有一个在 iPad 上运行的网络应用程序。它以全屏模式运行。如果我任务切换到另一个应用程序(通过双击主页按钮等),然后切换回我的网络应用程序,然后我的网络应用程序重新启动。

有什么方法可以防止 Web 应用在 iPad 任务切换后收到焦点时重新启动?显然,我只是希望它以失去焦点时的状态显示自己。

谢谢。

【问题讨论】:

  • 检查您的 info.plist 设置:有一个键“应用程序不在后台运行”尝试将此值设置为 NO(或取消选中)
  • @Hariprasad - 嗨 - 这不是 XCode 应用程序,它是一个网络应用程序(HTML、Javascript、CSS)。我是否认为 info.plist 适用于 XCode,而不是 Web 应用程序?谢谢。
  • 好吧,你是对的。这个网络应用程序在浏览器中运行吗?或像其他本机应用程序一样运行。我不知道网络应用程序。
  • 好问题,我也想知道。

标签: ipad web-applications


【解决方案1】:

不,这是不可能的。

最好的做法是将状态保存到 localStorage。如果您使用例如。用于跟踪您的状态的 URL 哈希(例如 myApp.html/#loginScreen),可以存储该信息,然后将其应用于 location.hash,这将调度 window.onhashchange。

换句话说(代码只是即时编写的示例):

1 - 将相关信息存储到localStorage:

localStorage.setItem("state", "loginScreen");

2 - 在启动时检索值并将其应用于哈希:

location.hash = (localStorage.getItem("state")) ? localStorage.getItem("state") : "";

3 - 将事件监听器绑定到 onhashchange 并从那里继续:

window.addEventListener("hashchange", function() {
    if (location.hash.length) {
        alert("Current state of UI is :"+ location.hash);
    }   
}, false);

【讨论】:

    【解决方案2】:

    至少在 iOS 4.2.1、5.1.1、6.0 和 6.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);
    

    有关此策略的更详细讨论,请查看Maintain PHP Session in web app on iPhone

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      相关资源
      最近更新 更多