2011-09-03 29 views
5

我有一個具有30秒進程的iphone應用程序,它可以執行一些網絡IO。基本上,當應用程序在後臺,我希望這個過程每小時運行一次(實際上每天一次,但如果失敗,我希望它在一個小時內重新運行)。如何在後臺每小時運行一次〜30秒的進程(iphone應用程序)

有了ios 4的背景特徵,這可能嗎?如果是這樣,怎麼樣?我會遇到什麼限制?

非常感謝!

+1

我做了大量的研究,發現「沉默推送通知「爲我做了詭計。檢出http:// stackoverflow。com/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-runs-in-the-background- –

回答

6

看看蘋果公司的有關在後臺運行的代碼文檔。

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

有接近轉到後臺任務的幾種不同的方式。唯一可以完全後臺處理的應用程序是「音頻」,「voip」和「位置」應用程序,這需要在Info.plist中聲明。

如果你的應用程序不是這種類型的,你可能會發現很難做到你想要的東西。有一些方法可以讓你的應用程序在有限的時間內保持活動狀態(也在該鏈接中),但最終你的應用程序將被關閉。

本地通知只會提示用戶打開應用程序 - 您是否真的想每隔30秒在手機上彈出警報?

+0

看起來像沒有辦法做我想做的事。謝謝你讓我知道。 – Chris

+0

此答案中的鏈接已死亡。你可以在http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Opsimath

0

我相信,使用本地通知,將幫助.... 檢查以下....

  1. http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
  1. 應用程序可以創建和安排本地通知,然後操作系統按計劃日期和時間交付它。如果應用程序在前臺未處於活動狀態時傳遞該應用程序,則會顯示警報,標記應用程序圖標或播放聲音 - 無論在UILocalNotification對象中指定。如果應用程序在前臺運行,則沒有警報,徽章或聲音;相反,如果委託實現它,應用程序將調用didReceiveLocalNotification:方法。

  2. 委託可以檢查通知的屬性,如果通知在其userInfo字典中包含自定義數據,它可以訪問該數據並相應地處理它。另一方面,如果本地通知僅標記應用程序圖標,並且用戶作爲響應啓動應用程序,則應用程序:didFinishLaunchingWithOptions:方法被調用,但選項字典中不包含UILocalNotification對象。

+0

本地通知允許您從彈跳板彈出警報消息,更新應用圖標的徽章數字,或播放聲音。但它從來沒有給你任何做網絡I/O的機會。 –

+0

嗨,感謝您的信息。我根據以下內容寫了上面的內容1.應用程序:didReceiveLocalNotification:參考討論。他們說這可能是UILocalNotification對象包含的任何東西。 2.在UILocalNotification的Overview部分中:「委託可以檢查通知的屬性,如果通知在其userInfo字典中包含自定義數據,它可以訪問該數據並相應地處理它。」....所以我認爲userinfo字典可以有一個URL來調用,它可以調用它並處理數據,如果過程可以在特定的時間內完成允許後臺進程 – Mohammad

1

我正在做一些類似的研究,看看this SO answer以防你以前找不到它。諸如DataMan或Data Usage之類的應用程序必須在後臺執行某種類型的定期代碼執行,所以我不能100%確信你所要求的是不可能的。

+0

找到關於後臺處理的信息。看起來有趣,但我很漂亮肯定這種hacky解決方案會讓我被踢出應用商店pronto! – Chris

相關問題