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

How to i add a timer to my app that will run even if the app is closed?

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

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

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

不幸的是,根据您的操作,您可能无法执行此操作。 Apple 对背景有非常具体的要求 "modes"。默认情况下,我相信您有 10 分钟的时间来完成 运行 任务,同时您的应用已在后台运行。如果您无法做到这一点,则必须注册相应的背景模式。

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

如果您永远不会将您的应用程序提交到应用程序商店,我可以为您提供一种 "trick" 应用程序以在后台保持 运行 的方法。

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

  • 例如:我相信您可以注册接收远程通知,在远程网站上注册一个任务,然后可以向您的应用程序发送通知,然后通知用户。然而,用户仍然必须根据该通知采取行动。

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

无法在后台为所欲为。不幸的是,Apple 不允许您 运行 NSTimers 在后台。

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

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

  • 让用户随时了解其位置的应用,例如导航应用。

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

您可以在上面的文章中阅读更多内容。希望对你有帮助。