2011-12-27 120 views
0

當按下應用鎖定按鈕,系統會調用:iPhone如何防止我的應用程序在鎖定屏幕時進入後臺?

-(void) applicationWillResignActive:(UIApplication *)application and 
-(void) applicationDidEnterBackground:(UIApplication *)application 

所以,我該怎麼做才能讓我的應用程序只resignActive但沒有進入的背景下,當屏幕鎖定,我可以運行我的定時器(定時器」在後臺模式下執行)。

一種方法是將.plist中的屬性「應用程序不在後臺運行」設置爲YES,它工作正常,但我的應用程序無法再次進入背景,但是我希望它在按主屏幕按鈕時會進入背景。

更新:我想在某個特定時間播放一些音樂,就像音樂鬧鐘一樣,我仍然希望它在屏幕鎖定時正常工作,因爲保持屏幕可能會浪費很多時間電池,當用戶按主頁按鈕並退出我的應用時,我不需要做任何事情。

+0

您可以查看一篇講解如何防止應用程序進入後臺的教程 - http://blog.marcopeluso。2009/08/23/how-to-prevent-iphone-from-deep-sleeping/ – rishi 2011-12-27 09:42:23

+0

謝謝,但我認爲這種方式只能讓系統不進入深度睡眠,但不會阻止我的應用進入後臺。 – user1117367 2011-12-28 02:15:46

+0

從什麼時候你鎖定設備時,應用程序進入後臺?我只有在用戶點擊主頁按鈕或切換應用程序時纔會觸發它。 – PaulG 2013-02-04 18:26:33

回答

0

應用程序必須具有特殊權限才能在後臺執行任何處理,例如音頻服務/ Voip服務/位置服務。

「我可以在屏幕鎖定時運行我的計時器(計時器無法在後臺模式下執行)」 您不能在後臺運行計時器,它將繼續運行而不使用任何開發工具,並且這樣做...蘋果不會接受你的應用程序在appstore - 這是最糟糕的一面,如果你的目標是appstore ...

+0

其實我不想在背景中做任何事情,我想知道的是,當我的應用程序關閉屏幕時,我的應用程序可以保持在前臺。 – user1117367 2011-12-28 02:04:29

0

你不能阻止你的應用程序進入後臺。這由操作系統(iOS)決定,並且不受應用程序的控制。但是,從閱讀更新的問題,我不認爲這是你需要做的。

您可以使用[UIApplication beginBackgroundTaskWithExpirationHandler;]執行後臺任務(請參閱reference)。如果您想在某段時間後發生某些事情,請查看[UIApplication scheduleLocalNotification:]

允許某些服務(如VOIP,Audio和CoreLocation)在後臺運行。將這些用於非預期目的(例如,播放無聲音頻)可能會使您的應用遭到拒絕。

請注意,您無法阻止應用程序進入後臺。只是有些任務被允許在後臺執行。正因爲如此,你不能做GUI操作,NSTimers可能不會觸發(至少我知道一些他們沒有的情況)。

這將有助於瞭解您想要在後臺運行以提出解決方案。

+0

我真的不希望我的應用程序進入背景,但正如你所說,我可以認爲按下我的應用程序中的鎖按鈕就像按主頁按鈕,我的應用程序應該進入背景。 – user1117367 2011-12-28 01:51:21

0

除非您在播放音頻之前移動到背景,否則當應用程序移動到背景或屏幕鎖定(具有一些奇怪的細節)時就無法啓動音頻播放,只需說出它就好像您處於背景沒有實際收到applicationDidEnterBackground通知。

您可以做的最好的安排是本地通知,但在這種情況下,您的音樂被限制爲30秒,並且必須是您的應用程序包的一部分。

1

打開Info.plist文件並添加應用程序不會在後臺運行。將值設置爲YES。

相關問題