2011-05-23 217 views
7

我正在編寫一個涉及初始屏幕驗證的應用程序,並允許在以後的屏幕上訪問敏感數據。當iPhone被鎖定時,無論是使用鎖定按鈕還是通過自動鎖定,我都希望應用程序自行關閉以作爲安全措施。有什麼辦法可以做到這一點?屏幕鎖定時如何關閉我的iPhone應用程序?

回答

10

你UIApplicationDelegate會收到

– applicationWillResignActive: 

消息時屏幕鎖定,並

– applicationDidBecomeActive: 

當它回來。但是,它也可能會在其他情況下收到這些消息(例如接聽電話,用戶在iOS 4.0及更高版本中關閉應用程序),但我不知道區分原因的方法。

在我看來,更好的用戶體驗就是在應用程序返回時再次彈出身份驗證。這樣用戶在手機解鎖時不會感到困惑,而且他們運行的應用程序已經神祕地退出。

+0

謝謝,這是偉大的,知道這些發送的具體方法案例。 – Andrew 2011-05-25 22:33:43

2

如果我沒記錯,手機鎖定時應用程序會進入睡眠狀態。

由於多任務Apple的推出改變了行爲,因此您的應用程序在解鎖/切換到時會發送特定消息。

我建議只聽這個東西,然後再次要求認證。

我不認爲你可以退出你的應用程序(也不應該知道),我不知道任何應用程序,只是殺死自己...

對不起,我是沒有太具體的這裏,但我希望你現在就知道在哪裏去...

3
  1. 「關閉你的應用程序」違反了Apple的指導方針。雖然有些應用程序確實會這樣做,但這可能會導致您的應用程序被拒絕。在多任務處理之前,它違反了Apple的指導原則,現在由於多任務處理而變得更加重要。用戶體驗是當他們在鎖定或在另一個應用程序中回到手機和應用程序時,應用程序仍應該運行。要「關閉你的應用程序」會導致用戶認爲你的應用程序崩潰了,他們可能會爲此寫評論。

  2. 如果您希望在用戶離開時保護應用程序中的信息,那麼您應該查看UIApplicationDelegate Protocol Reference。特別是applicationDidEnterBackground:(你應該登錄用戶)和applicationDidBecomeActive:(你應該讓用戶重新登錄)。

作爲最後一個音符,你可能想默認爲「自動退出」,但給用戶一個設置選項,讓他們登錄,如果他們的願望。不那麼難,少數人想要它可以利用這個設置。

+1

我實際上已經在某個地方看到,iPhone應用程序本身就是不好的做法,但我有點不理會這是個人意見。我開始從這個問題的衆多回應中看到,除了粗魯和模棱兩可之外(用戶沒有任何方法可以說明受控退出和崩潰之間的區別),它實際上被蘋果禁止。 – Andrew 2011-05-25 22:40:03

6

要清除任何混淆,我只是在iOS 4.3的設備上運行一些測試。2:

當您啓動您的應用程序,你的應用程序被髮送: 應用中:didFinishLaunchingWithOptions: applicationDidBecomeActive:

當你點擊主頁按鈕,您的應用程序被髮送:

applicationWillResignActive: 
applicationDidEnterBackground: 

當你稍後重新啓動相同的應用,您的應用會被髮送:

applicationWillEnterForeground: 
applicationDidBecomeActive: 

當您點擊鎖定按鈕時,您的應用程序被髮送:

applicationWillResignActive: 

當你解開,你的應用程序被髮送:

applicationDidBecomeActive: 

當你一個電話,你的應用程序被髮送:

applicationWillResignActive: 

如果你不迴應那個電話,你的應用被髮送了:

applicationDidBecomeActive: 

當你一個電話,你的應用程序被髮送:

applicationWillResignActive: 

如果你回答這個問題,你的應用程序被髮送:

applicationDidEnterBackground: 

當你掛斷該呼叫,您的應用程序被髮送:

applicationWillEnterForeground: 
applicationDidBecomeActive: 

,當你得到我想說的applicationWillResignActive:那麼你應該退出,去驗證身份,鎖定或丟棄您的機密信息,當你得到一個applicationDidBecomeActive:然後重新進行身份驗證。那個人在發佈時被調用,從背景中返回並解鎖設備。

而且,這兩種方法可能會引起您關注,但他們並不真正幫助你感興趣的具體情況:

- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application 

- (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application 
+0

我也建議不要在設備鎖定時退出應用程序。這不是一個用戶友好的行爲。 – mahboudz 2011-05-24 07:33:38

+1

謝謝,作爲一個相當新的程序員,我仍然習慣於平衡實用性和用戶友好性。這有助於很多! – Andrew 2011-05-25 22:36:17

相關問題