2014-01-21 26 views
0

我有一款運行良好的iOS應用程序,保存了登錄屏幕的奇怪問題。我的iOS應用程序在閒置後會顯示登錄屏幕

該應用程序通過向後端發送憑證登錄。在成功登錄後,令牌會返回到應用程序,該應用程序會將該令牌用於所有將來的請求。令牌的壽命很長。

基本上,我希望用戶登錄,直到他明確註銷。

問題是,經過一段時間的閒置時間後,我去了應用程序,它已經回到登錄屏幕。

我覺得這很奇怪。正如我所提到的,令牌有效期很長,即使在一段時間不活動後切換到應用程序,也不會觸發與後端的任何通信。

所以我想知道它是否與視圖hiearchy有關?登錄屏幕呈現 - 在成功登錄後 - 模態控制器,然後處理所有事情(從紙張菜單控制器:https://github.com/honcheng/PaperFoldMenuController)。

任何想法?我覺得有一些很簡單,我忽略了...

+1

沒有足夠的細節我害怕。沒有看到應用程序如何放在一起,什麼觸發它「回到登錄屏幕」,沒有任何人可以做什麼來幫助你。 – trojanfoe

+0

存儲您的登錄憑證NSUserDefaults在鍵值對中,當用戶點擊註銷按鈕,然後從NSUserDefaults清除相同的鍵值對 - 通過這樣做可以在本地管理登錄會話 –

+0

沒有足夠的信息什麼觸發登錄屏幕出現 – auspicious99

回答

3

我想到的是,iOS清除內存中的應用程序數據&再次重新啓動應用程序,導致您的應用程序重新初始化。

您應該實現一些邏輯在下面的方法來存儲您的憑證&重用他們在應用程序啓動:

– application:willFinishLaunchingWithOptions: 
– application:didFinishLaunchingWithOptions: 
– applicationDidBecomeActive: 
– applicationWillResignActive: 
– applicationDidEnterBackground: 
– applicationWillEnterForeground: 
– applicationWillTerminate: 
– applicationDidFinishLaunching: 

我建議儲存在– applicationWillResignActive:用戶憑證和– applicationWillTerminate:

清除存儲的憑據希望它有助於:)

+0

謝謝穆罕默德我會嘗試看看這些方法會發生什麼。我很有道理。 – rohdester

+0

只需跟進:看來你是對的。看了更多後,由於「內存壓力」,iOS似乎關閉了應用程序。該應用程序本身沒有使用太多的內存(23 MB),但通過使用很多不同的應用程序,我可以強制終止。我按照你提到的做法:在應用程序重新初始化時,將鑰匙鏈中的憑證保存在鑰匙串中並自動登錄用戶。感謝指導我的方向。 – rohdester

+0

你不止歡迎:) – MuhammadBassio

相關問題