【问题标题】:How to i add a timer to my app that will run even if the app is closed?如何向我的应用程序添加一个即使应用程序关闭也将运行的计时器?
【发布时间】:2015-04-13 17:07:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios xcode swift timer nstimer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      很遗憾,根据您的操作,您可能无法做到这一点。苹果对后台“模式”有非常具体的要求。默认情况下,我相信你有 10 分钟的时间来完成正在运行的任务,而你的应用程序已经后台运行。如果您无法做到这一点,则必须注册适当的后台模式。

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

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

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

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

      【讨论】:

        【解决方案3】:

        不可能在后台随心所欲。不幸的是,Apple 不允许您在后台运行 NSTimers

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

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多