我的iOS游戏有音乐和音效。我想让用户听他们自己的音乐来代替游戏的背景音乐。当另一个应用程序开始/停止播放音频时,我的应用程序能够得到通知吗?
一个简单的解决方案是添加一个新的菜单项,禁用游戏的背景音乐。不过,我想避免创建一个新的菜单项,除非我确信这种方法对用户来说更糟糕。
我目前的做法:
- 设置音频会话类别
AVAudioSessionCategoryAmbient
,让游戏音效有iPod(或其他音乐应用程序)播放的混合。 - 在
applicationDidBecomeActive
,检查[[AVAudioSession sharedInstance] isOtherAudioPlaying]
并关闭游戏的音乐,如果另一个应用程序在后台播放。
这似乎在大多数情况下工作。游戏启动时,会中断后台播放音乐应用程序。如果您想播放自己的音乐,则必须故意返回并在第三方音乐应用程序中按播放,或者使用iOS 7的轻扫式控制面板。否则,游戏自己的音乐将会接管。
这都与一对夫妇的缺陷:
- 当第三方音乐应用程序的播放开始/由内置于iPhone/iPod的耳塞点击键遥控器停止它不会检测。
- 虽然它适用于iPod应用程序,但它不适用于SoundCloud应用程序。我没有测试任何其他人。
问题:
有没有办法收到通知时,第三方音乐应用程序(例如iPod的应用程序)启动/停止播放?或者,当@property BOOL otherAudioPlaying
的值发生变化时,是否有通知?
这种方法能否适得其反?不简单地使用菜单项是愚蠢的吗?
那种不苹果的方式,是否还没有委托或通知呢? – s1ddok