我正在尋找一種方法來讓iPhone應用程序無限期地在後臺運行。這個應用程序不會使用位置服務或VoIP,而是預先執行特定任務(抱歉,但我不能明確說明任務是什麼)。該任務可以與檢查文件是否存在然後睡眠1秒相媲美。爲了這個問題的目的,任務應該永遠運行。iPhone:無限期地在後臺運行
任何幫助,將不勝感激。據我可以從iPhone文件告訴我所要求的是不可能的,所以我非常難倒...
我正在尋找一種方法來讓iPhone應用程序無限期地在後臺運行。這個應用程序不會使用位置服務或VoIP,而是預先執行特定任務(抱歉,但我不能明確說明任務是什麼)。該任務可以與檢查文件是否存在然後睡眠1秒相媲美。爲了這個問題的目的,任務應該永遠運行。iPhone:無限期地在後臺運行
任何幫助,將不勝感激。據我可以從iPhone文件告訴我所要求的是不可能的,所以我非常難倒...
您是對的 - 除非您在後臺運行的原因符合Apple定義的類別之一(播放音頻,voip等),否則您的應用將無法無限期地在背景。如果你想這麼做的原因確實很有吸引力,那麼你可能想和蘋果談談讓他們接受它。不過,期待一場漫長的艱苦戰鬥。更實用的方法是尋找可以達到相同效果的方法,例如在服務器上運行後臺代碼或從系統註冊各種通知。
你碰巧知道如何從蘋果請求這樣的事情? –
我不認爲蘋果曾經這樣做,否則將永遠這樣做。他們有一套嚴格的規則,我認爲他們不會爲一個應用程序而打破。此外,他們可能需要更新設備上的軟件以支持這類任務。 –
@JoshuaAbrams,通常要求一個功能,[提交bug](http://bugreport.apple.com)。如果您真的認爲您的應用程序如此具有創新性和引人注目以至於蘋果可能會考慮讓您的應用程序在後臺運行,那麼您就需要更直接地與它們交談。我首先聯繫Apple開發人員關係部門 - 您可以在開發人員網站上找到聯繫信息。但請記住,有數十萬個已批准的應用程序,因此他們可能已經考慮了大多數使用情況。 – Caleb
這不能用當前的SDK完成。後臺應用只能使用特定服務(音頻,位置等)。
假設我有另一個後臺任務,無限期地使用藍牙與其他設備通話。是否支持? –
號只有音頻,位置和voip任務。 –
允許的類型的多任務是audio
,location
和voip
,所以它聽起來像你的任務可以在iOS上是不可能的。
這隻能在越獄環境中完成。如果這不是您的選擇,那麼SDK目前不支持長期後臺活動,除非用於音頻,位置或voip目的。
正如已經討論的,真正的後臺處理將不可能滿足您的要求。
但是,也許你可以利用背景通知來達到目的?
一個令人失望的問題,但我仍然回答你提供的邏輯。儘管在應用商店審查過程中它不被接受。
while (your condition)
{ NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc ] init];
// do your desired task here
[aPool release]
}
稱這種現象applicationDidEnterBackground
和看到最新的儀器發生拿到背景的工作有很好的瞭解。
快樂編碼!
您是否希望應用程序在啓動時自動啓動? – GarlicFries
@GarlicFries 在某些時候,是的。但爲了這個問題的目的,我不需要它。 如果你知道如何隨意闡述。 –
你是否最終會就此向蘋果公司(正如你所建議的答案中所建議的那樣),如果是這樣,結果如何? – newenglander