3

iPhone で Web アプリとして動作するように設計された複数ページの Web サイトがあります。

通常は次のとおりです。

<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 アプリへの標準的なアプローチは、Sencha のようなインターフェースを使用することであることは承知しています)。

iPhone のホーム画面から起動すると問題なく動作し、Safari から表示した場合と同じように動作します。

ただし、セッションの途中で電話に出ると、問題が発生するようです。

通話が完了すると、iPhone (この場合はバージョン 4) は Web アプリに戻りますが、以前に表示したページを復元する代わりに、ホーム画面 (Web アプリが開始されたときに読み込まれるページと同じページ) をリロードします。 )

Safari でサイトを表示し、呼び出しを受け入れると、これは行われず、URL と現在のセッション値が維持されます。

これは Web アプリの既知の問題ですか? 回避策はありますか?

(私が持っている 1 つのアイデアは、ローカルの SQLite データベースでセッションと URL の値を維持することですが、これが最善の方法であるかどうかはわかりません)

4

3 に答える 3

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 で動作することをテストしました。デバイスの電源を切って再起動した後でも、セッションは復元されます。

この戦略のより詳細な説明については、この質問に対する私の回答をご覧ください: iPhone の Web アプリで PHP セッションを維持する

于 2013-01-30T09:31:15.277 に答える
0

ログイン情報を $_SESSION 変数に保存する代わりに、$_COOKIE に保存します。Cookie は、期限切れに設定した時期に応じて保存されます。ユーザーが Web アプリの "内部" または通常の Web バージョン (および Cookie が同じ) にログインしている限り、毎回、または 2 つの間で切り替えるときにログインする必要はありません。

于 2012-03-10T19:51:19.320 に答える