【发布时间】:2013-11-21 05:42:54
【问题描述】:
我的 iOS 游戏有音乐和音效。我想让用户听他们自己的音乐来代替游戏的背景音乐。
一个简单的解决方案是添加一个禁用游戏背景音乐的新菜单项。但是,我想避免创建新的菜单项,除非我确信这种方法对用户来说更糟。
我目前的做法:
- 将音频会话类别设置为
AVAudioSessionCategoryAmbient以允许将游戏音频与 iPod(或其他音乐应用程序)播放混合。 - 在
applicationDidBecomeActive中,选中[[AVAudioSession sharedInstance] isOtherAudioPlaying],如果后台正在播放其他应用,请关闭游戏音乐。
这似乎在大多数情况下都有效。当游戏启动时,它会中断背景音乐应用程序的播放。如果你想播放自己的音乐,那么你必须特意返回并在第三方音乐应用程序中按下播放,或者使用 iOS 7 的向上滑动控制面板。否则,游戏自己的音乐将接管。
这有几个缺陷:
- 它不会检测第三方音乐应用程序的播放何时由 iPhone/iPod 耳塞内置的点击按钮遥控器开始/停止。
- 虽然它适用于 iPod 应用程序,但它不适用于 SoundCloud 应用程序。我没有测试过任何其他人。
问题:
有没有办法在第三方音乐应用(例如 iPod 应用)开始/停止播放时接收通知?或者,有没有办法在@property BOOL otherAudioPlaying的值发生变化时得到通知?
这种方法会适得其反吗?不简单地使用菜单项是愚蠢的吗?
【问题讨论】:
标签: ios cocoa-touch avfoundation avaudiosession