2011-10-05 43 views
3

我有一個多頁面網站,專門用作iPhone上的網絡應用程序。iPhone 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" /> 

該網站不使用煎茶或JavaScript的網頁間導航,只是標準的錨鏈接和頁面重新加載(我知道,標準的做法,以網絡-apps是使用類似Senc​​ha的接口)。

從iPhone主屏幕啓動時,它的工作效果非常好,並且與通過Safari查看時的工作方式相同。

雖然在電話會議中期接聽電話時,似乎會出現一個問題。

調用完成後,iPhone(本例中爲版本4)將恢復到Web應用程序,但不是恢復以前查看的頁面,而是重新加載主屏幕(與網頁加載時相同的頁面-app啓動)

在Safari中查看站點並接受呼叫時,它不會執行此操作並維護url和當前會話值。

這是網絡應用中的一個已知問題嗎?有沒有解決方法?

(一個想法,我必須是維持在一個本地SQLite數據庫會話和URL值,但我不知道這是最好的辦法)

+0

我搜索了一下,因爲我對這個話題感興趣。它似乎是iPhone上的網絡應用程序的限制,你將不得不圍繞它編碼。 – Krumelur

+0

您是否找到解決您的問題的方法? – Christian80

+0

還沒有,但Will0的答案可能會起作用 – Peter

回答

0

關鍵是要做到這一點:

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

0

而不是存儲在$ _SESSION登錄信息變量,將其存儲在$ _COOKIE中。 Cookie將根據您設置爲過期時間進行保存。只要他們在網絡應用程序的「內部」登錄,或者常規的網絡版本(和cookie是相同的),他們就不必每次都登錄或在兩者之間切換。

0

我haved同樣的問題,我下的iOS V10 Web應用程序。這不是會話和/或cookie的問題(基於具有足夠壽命的cookie的會話機制是可以的)。

問題是當在WebApp模式下運行(即從桌面快捷方式而不是Safari瀏覽器啓動應用程序)時,切換到另一個應用程序(例如接聽電話)時「上下文」丟失。當你回到應用程序,請求的URL不是最後一個,但它是保存到桌面快捷方式的URL ...

在我的情況下,快捷方式是從登錄屏幕,所以每次我從另一個應用程序切換回我的應用程序,它是/ login登錄URL ...它看起來像我已註銷...

所以要小心你的web應用程序的URL快捷方式。 在這一點上,我還沒有找到一種方法來指定一個特定的URL,當用戶創建快捷方式。

相關問題