iOS在后台代码中运行计时器

时间:2012-07-25 15:07:06

标签: objective-c ios background scheduled-tasks task

所以我在iOS中看到,当你的应用在后台运行时,所有计时器都会暂停。我还读到您可以使用beginBackgroundTaskWithExpirationHandlerlike so)在bg中运行任务。

我想要实现的是每3分钟调用一次方法,在第一次调用之前调用另一种方法。我已经成功地在一个NSTimer内完成了这项工作,并以一种允许我这样做的方式重复。它工作正常,但当应用程序在后台时显然被禁用(或暂停) - 我只能假设由于上述原因。

有没有人知道是否有办法运行计时器或至少在特定时间后调用某些东西以便我可以这样做?

1 个答案:

答案 0 :(得分:2)

基本上,如果您想继续在后台运行活动,则必须满足以下要求之一。来自Apple文档:

  

实施长时间运行的后台任务

     

对于需要执行更多执行时间的任务,您必须这样做   请求特定权限,以便在后台运行它们   他们被停职了。在iOS中,只允许使用特定的应用类型   在后台运行:

     
      
  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  •   
  • 随时向用户通知其位置信息的应用,例如导航应用
  •   
  • 支持互联网协议语音(VoIP)的应用
  •   
  • 需要下载和处理新内容的报亭应用
  •   
  • 从外部附件接收定期更新的应用
  •   
     

实施这些服务的应用必须声明他们的服务   支持和使用系统框架来实现相关方面   那些服务。声明服务可以让系统知道哪个   您使用的服务,但在某些情况下,它是系统框架   实际上会阻止您的申请被暂停。

http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW24