【问题标题】:How to start playing music when app is already in background?当应用程序已经在后台时如何开始播放音乐?
【发布时间】:2011-10-31 05:48:57
【问题描述】:

我正在编写一个需要播放声音以响应用户位置变化的应用。

当应用程序在主焦点(而不是在后台)运行时,一切正常,并且使用 AVAudioPlayer 可以正确播放声音。

如果我让应用程序进入后台(通过按主页按钮)声音会继续播放(我已经更改了 info.plist 文件并使用了 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 使这成为可能)。

我的问题是,如果 GPS 事件发生在应用程序已经在后台运行时,则永远不会播放声音(即使应用程序返回主焦点时也不会播放),尽管我可以在控制台中看到 GPS 事件被捕获,当我使用断点进行调试时,我可以看到应该播放音乐的代码已经执行,但仍然没有播放音乐。

我的问题是:当应用程序不在主要焦点(在后台)时,如何让应用程序开始播放声音?

【问题讨论】:

  • 我不知道这是否可能,但我会尝试发送本地通知,如果用户打开它,则开始播放声音。
  • 尝试使用不同的声音框架,例如 MediaPlayer 或 AudioToolBox,我认为它们可能比 AVAudioPlayer 更有能力从后台播放声音。

标签: iphone objective-c cocoa-touch avaudioplayer multitasking


【解决方案1】:

我认为您只需要将您的应用程序声明为音频应用程序。您可以通过在 info.plist 文件中添加带有值音频的 UIBackgroundMode 键来做到这一点。

【讨论】:

  • 我将其声明为音频应用程序。也许我不清楚。 "我更改了 info.plist 文件..."
【解决方案2】:

我认为您不能这样做,因为激活您的应用程序的唯一方法是通过通知,并且这些是按时间安排的,而不是由操作触发的。也许,有一种使用后台线程的方法,但无论如何都会被Apple拒绝,所以说服是没有意义的。 高温下, 马库斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多