应用程序处于后台时,在特定时间播放声音

tra*_*ein 7 iphone audio background multitasking ios4

我正在寻找一些方法让我的应用程序在特定时间播放声音,而它在后台(IOS4多任务处理).目前,我使用本地通知,效果很好,除了:

  • 如果手机静音,则不会播放声音
  • 30秒播放限制

我看到有setKeepAliveTimeout:handler:但它只适用于voip-apps,因为这不是我的应用程序的目的,我想Apple会因此拒绝它.我还看到了一个解决方案,其中一直播放"空"声,直到达到时间为止,但是 - 忽略这不是一种非常优雅的方式,无论如何 - 我读到这也可能会让应用被拒绝.

由于有一些闹钟应用程序正在寻找我正在寻找的东西,我想知道他们是如何实现这个功能的.

感谢任何提前提示!

Sag*_*tus 2

如果您寻求 Apple 批准的解决方案,那么您是对的,您不能使用setKeepAliveTimeout:handler,即使您可以 - 您也不能将超时设置为小于 600 秒,所以我想它不会无论如何都是很有用的(此外,即使远程接近您指定的超时,也不能保证触发事件。例如,我将其设置为 600 秒,有些事件早在 360 秒就触发了..)。

关于播放无声声音,除了浪费电池之外,如果您的应用程序合法使用背景音频(如果您正在实现闹钟,这是非常明显的),我不认为您的应用程序有理由被拒绝,只要您不尝试使用其他后台功能(GPS 信号、VoIP 处理程序等)。

这是一个使用此“功能”来获得好处的示例应用程序: http://tapbots.com/blog/pastebot/pastebot-music-in-background

关于其他方法,您可以查看此主题: How do I start play audio while insilent mode &locking in iOS 6?

就我个人而言,应对苹果的后台政策并不是一件容易的事。由于所有的限制,我和我的公司很难维持简单的 VoIP 连接。我最好的建议是尽量少做后台工作。如果该UILocalNotificaion解决方案适合您,您可能应该坚持下去并接受其局限性。