如何为我的应用程序添加一个计时器,即使应用程序关闭也会运行?

时间:2015-04-13 17:07:09

标签: ios xcode swift timer nstimer

在我正在制作的应用中,用户每2小时只能执行一项任务。即使应用程序已关闭且未运行,如何跟踪2小时?

请在Swift中给出答案。这是我到目前为止的代码

@IBAction weak var button(sender: AnyObject) {        
    if timer >= 2 hrs {    
       println("OK")    
    }    
    else {
       println("Please wait 2 hrs before continuing")
    }
}

3 个答案:

答案 0 :(得分:3)

创建NSDate对象并将其保存为用户默认值。当应用程序重新启动时,获取对象并比较时差。如果已经过了2个小时,请让用户执行操作。如果还有一段时间,请根据2个时间戳之间的差异启动新的计时器。

答案 1 :(得分:0)

不幸的是,根据您的行为,您可能无法做到这一点。 Apple对背景“模式”有非常具体的要求。默认情况下,我相信您的应用程序已经背景化,您有10分钟的时间来完成正在运行的任务。如果您无法这样做,则必须注册适当的背景模式。

https://developer.apple.com/library/prerelease/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

如果您永远不会将应用程序提交到应用程序商店,我可以为您提供一种“欺骗”应用程序以在后台继续运行的方法。

如果您正在使用某种通知网络服务,您可以将其设置为以这种方式工作,但如上所列,您正在查看否。

  • 例如:我相信您可以注册接收远程通知,向远程网站注册任务,然后可以向您的应用程序发出通知,然后通知用户。但是,用户仍然必须对该通知采取行动。

答案 2 :(得分:0)

不可能在后台随意做。不幸的是,Apple并不允许你在后台运行NSTimers

关于Apple的这个article,对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:

  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  • 在后台录制音频内容的应用

  • 随时向用户通知其位置信息的应用,例如导航应用。

  • 支持互联网协议语音(VoIP)的应用。
  • 需要定期下载和处理新内容的应用。
  • 从外部附件接收定期更新的应用。

您可以在上面的文章中阅读更多内容。我希望这能帮到你。

相关问题