使用NSTimer以设定的间隔播放声音,而不是在后台Xcode6.4中播放

时间:2015-08-01 17:45:40

标签: swift audio background nstimer

我是编写应用程序的新手。

刚刚写了我的第一个应用程序,用于半程马拉松训练。它是一个跑步/步行计时器,可以播放"运行"或" Walk"当用户切换活动模式时,用户会选择这些间隔。 该应用在手机处于活动状态时可以正常使用,但会在后台停止。我搜索了Stackflow上的很多帖子,很多人说你不应该在后台使用NStimer 爱一些帮助是让这个在后台工作。提前谢谢。

我正在使用Xcode 6.4

我的代码:

<html xsl:version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns="http://www.w3.org/TR/xhtml1/strict">
  <head>
    <title>Expense Report Summary</title>
    <link href="foo.css"/>
  </head>
  <body>
    <p>Total Amount: <xsl:value-of select="expense-report/total"/></p>
    <xsl:for-each select="//*">
      <!--...-->
    </xsl:for-each>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

从iOS 7开始,您只有180秒的背景时间,但是当您点按主页按钮时,您不会让您的应用在后台运行。您可以在后台将应用暂停。当你在后台时,你的代码不会运行。

根据Apple

  

当用户未主动使用您的应用时,系统会将其移至后台状态。对于许多应用程序,后台状态只是暂停应用程序的一个简短停止。暂停应用程序是一种改善电池寿命的方法,它还允许系统将重要的系统资源投入到引起用户注意的新前台应用程序中。

应用程序需要获得特殊权限才能在后台运行,以便执行某些有限的活动,如位置,音频或蓝牙,这将使其在后台活着

您可以使用一些技巧,但仍然不允许应用程序超过 ~180s ,只需像往常一样实施scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:方法并将以下内容放入{ {1}}:

AppDelegate

180秒后,计时器不会激活更多,当应用程序在前台恢复时,它将再次开始射击。

我强烈建议您阅读Background Execution Apple的教程可以让您知道它的工作原理并满足您的需求。 我希望这能帮到你。