2

我已經創建了一個Web服務應用程序,我想填充我的視圖控制器根據我在主線程中獲取(通過GET)的響應。但我想創建一個預定的計時器,它將去控制我的服務器,如果有任何區別(比方說,如果數組的計數已經改變),我將創建一個本地通知。據我從這裏和谷歌的一些結果閱讀,我不能在一些特殊情況(音頻,Vo-IP,全球定位系統)的背景下運行我的應用程序超過10分鐘..但我需要控制服務器至少一個分鐘..任何人都可以提供一些想法或鏈接嗎?設計模式爲背景工作應用程序

編輯
我不會賣的應用程序商店,只爲一個局域網。比方說,從服務器我會發送一些文本消息給用戶,如果有新消息傳遞,消息數組的數量將增加,在這種情況下,我將創建一個通知。我需要永遠保持這個「控制」路由,無論是在前臺還是後臺。 GCD提供這樣的解決方案是否有人有任何想法?

回答

0

只需在背景中循環播放靜音音頻文件,或者,在後臺ping用戶的位置。是的,這會使電池耗盡一點,但這對於家庭應用來說是一個簡單的破解。請記住在您的Info.plist中啓用背景類型!

+0

如果你有一些示例代碼或教程可以分享嗎?如果沒有,我會嘗試:) – ilhnctn 2012-03-16 15:54:15

+0

@ilis在後臺線程上只有一個CLLocationManager。 – 2012-03-16 16:32:04

+0

謝謝,我沒有如此的編程經驗,所以我問教程:)但我想我會抓住它很容易 – ilhnctn 2012-03-16 16:36:58

0

注意:「[我]在主線程中獲取(通過GET)。」這不是一個好方法。您應該從來沒有獲取主線程上的任何網絡資源。爲什麼?由於您的GUI由主線程維護,因此只要不是即時提取,它就會變爲無響應狀態。網絡上的任何滯後峯值都會導致用戶體驗不太理想。

答案:除了列出的特殊情況,您不能運行後臺應用程序。我看到它的方式:

  • 不要把應用程序放在後臺。 (蹩腳的解決方案)
  • 嘗試在應用程序和「服務器」之間放置另一個「實體」。我不知道爲什麼你「需要至少每分鐘控制一臺服務器」,但也許你可以委託這個「控制」到設備外的另一個進程?

iOS app -> some form of proxy server -> server which requires 
              "babysitting" every minute. 
+0

我不會在商店裏銷售應用程序,只適用於局域網。比方說,從服務器我會發送一些文本消息給用戶,如果有新消息傳遞,消息數組的數量將增加,在這種情況下,我將創建一個通知。我需要永遠保持這個「控制」路由,無論是在前臺還是後臺。你有什麼想法,GCD是否給出了這樣的解決方案? – ilhnctn 2012-03-16 15:42:33