背景工作app的设计模式

时间:2012-03-16 14:53:40

标签: objective-c ios5 background-process cocoa-design-patterns

我创建了一个Web服务应用程序,我想根据我在主线程中获取的响应(通过GET)来填充我的视图控制器。但我想创建一个计划的计时器,它将控制我的服务器,如果有任何差异(假设数组的计数已经改变)我将创建一个本地通知。至于我从这里读取和一些谷歌的结果,我不能在后台运行我的应用程序超过十分钟期望从一些特殊情况(音频,Vo-IP,GPS)..但我需要控制服务器至少一个分钟..有人可以提供一些想法 - 或链接吗?

修改
我不会在商店出售应用程序,仅用于局域网。假设,从服务器我将向用户发送一些文本消息,如果有新消息,消息数组将增加,在这种情况下,我将创建一个通知。无论是在前台还是在后台,我都需要永久保持这种“控制”路由。 GCD是否提供了这样的解决方案,有没有人有任何想法?

2 个答案:

答案 0 :(得分:0)

注意:“[...]我在主线程中获取(通过GET)。”这不是一个好方法。您应该从不获取主线程上的任何网络资源。为什么?因为只要获取不是即时的,由主线程维护的GUI将无响应。网络上的任何延迟峰值都会导致用户体验不佳。

答案:除了列出的特殊情况外,您无法运行后台应用。我看待它的方式:

  • 不要将应用程序放在后台。 (糟糕的解决方案)
  • 尝试在应用和“服务器”之间添加另一个“实体”。我不知道为什么你“需要每分钟至少控制一次服务器”,但也许你可以将这个“控制”委托给设备外的另一个进程?

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

答案 1 :(得分:0)

只需在后台循环播放静音音频文件,或者在后台ping用户的位置。是的,这会耗尽电池电量,但对家庭应用来说这是一个简单的黑客攻击。请记住在Info.plist中启用背景类型!