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