2010-07-11 82 views
3

有什麼辦法可以讓應用程序退出,而不是在按下主頁按鈕時進入後臺?出於安全原因,如果應用程序沒有在後臺運行,但在推送家時實際關閉,那會更好。這是而不是用於用戶安全,而是用於應用上的公司數據,因此它不是用戶的選擇。除了強迫蘋果退出之外,我找不到任何辦法戒菸。如何防止我的應用程序在iPhone上的後臺運行

+0

還有UIApplicationExitsOnSuspend,但您可以簡單地清除applicationDidEnterBackground:app委託方法中的任何身份驗證信息,並在應用程序返回到前臺時強制用戶重新登錄(applicationDidBecomeActive :) – 2010-07-11 09:27:04

回答

8

opting out of background execution在iPhone應用程序編程指南:

「如果你不想讓你的應用程序在後臺繼續當它退出,你可以明確地選擇退出後臺執行模型通過添加UIApplicationExitsOnSuspend關鍵應用程序的Info.plist文件,並將其值設置爲YES。

當應用程序選擇退出,非運行,非活動和活動狀態之間它的週期和永遠不會進入後臺或暫停狀態。

當用戶點擊主頁按鈕以退出應用程序時,應用程序委託的applicationWillTerminate:方法被調用,應用程序有大約五秒鐘的時間清理並退出,然後終止並移回到未運行狀態。

2

只需轉到您的項目的info.plist並選中「應用程序不在後臺運行」爲YES。

0

不幸的是,在嘗試完所有事情之後,我仍然無法看到我的應用程序正在按回車鍵退出。即使UIApplicationExitsOnSuspend爲YES並且在plist文件中爲boolean類型,它總是進入後臺,我從Simulator中移除了應用程序,重新啓動了Xcode和Simulator並嘗試了所有建議。

最後我開始調試應用程序,發現一個函數阻止應用程序退出。該功能相當簡單,並從網絡下載一些圖像,並從appDelegate文件的applicationDidFinishLaunching中調用。該功能是委託創建網絡連接和下載數據到其他一些可重複使用的類的任務,在那裏我有下面的代碼:

if(isBackgroundProcessingSupported){ 
     appDelegate.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{}]; 
     [NSURLConnection connectionWithRequest:request delegate:self]; 
    } 

所以最後事實證明,上面的代碼是負責將應用到背景上按主頁按鈕。當我評論上述代碼時,我的應用程序正在退出而不是進入後臺。

注意:代碼早在那裏,因爲最初的應用程序支持後臺處理。

希望這可以幫助那些也在努力尋找像我這樣的理由的人。

相關問題