我的iOS遊戲有音樂和音效。我想讓用戶聽他們自己的音樂來代替遊戲的背景音樂。當另一個應用程序開始/停止播放音頻時,我的應用程序能夠得到通知嗎?
一個簡單的解決方案是添加一個新的菜單項,禁用遊戲的背景音樂。不過,我想避免創建一個新的菜單項,除非我確信這種方法對用戶來說更糟糕。
我目前的做法:
- 設置音頻會話類別
AVAudioSessionCategoryAmbient
,讓遊戲音效有iPod(或其他音樂應用程序)播放的混合。 - 在
applicationDidBecomeActive
,檢查[[AVAudioSession sharedInstance] isOtherAudioPlaying]
並關閉遊戲的音樂,如果另一個應用程序在後臺播放。
這似乎在大多數情況下工作。遊戲啓動時,會中斷後臺播放音樂應用程序。如果您想播放自己的音樂,則必須故意返回並在第三方音樂應用程序中按播放,或者使用iOS 7的輕掃式控制面板。否則,遊戲自己的音樂將會接管。
這都與一對夫婦的缺陷:
- 當第三方音樂應用程序的播放開始/由內置於iPhone/iPod的耳塞點擊鍵遙控器停止它不會檢測。
- 雖然它適用於iPod應用程序,但它不適用於SoundCloud應用程序。我沒有測試任何其他人。
問題:
有沒有辦法收到通知時,第三方音樂應用程序(例如iPod的應用程序)啓動/停止播放?或者,當@property BOOL otherAudioPlaying
的值發生變化時,是否有通知?
這種方法能否適得其反?不簡單地使用菜單項是愚蠢的嗎?
那種不蘋果的方式,是否還沒有委託或通知呢? – s1ddok