2016-12-26 78 views
1

我們正在開發一個VOIP應用,雖然有一個積極的通話,但我們不想讓其他應用播放音樂或類似的東西(比如Whatsapp)。
有沒有辦法以正常的方式做到這一點,你能幫忙嗎?不允許其他應用播放音樂

編輯1:
我認爲,我們需要先從聽觀察者AVAudioSessionInterruptionNotification


接受的答案編輯2:
當聲音中斷開始,儘量只激活AudioSession一次。這工作。謝謝KudoCC

+0

「主動呼叫」是指系統電話嗎?或者你的應用的VOIP電話?你爲什麼認爲觀察AVAudioSessionInterruptionNotification會起作用? – KudoCC

+0

這是VOIP電話(也通過CallKit,iOS 10功能向系統報告)。如果我們觀察到通知,我們可以再次使AudioSession處於活動狀態,並通過它控制手機的音頻輸出。但我試過了,它不起作用。 – ondermerol

+0

您的應用程序是否使用'AVAudioSessionCategoryPlayAndRecord'類別?當您播放/錄製音頻時,您可以嘗試重新激活音頻會話,如果您成功激活音頻會話,則其他應用程序將停止播放。 – KudoCC

回答

1

這裏是關於audio category鏈接談判,在它裏面的表: enter image description here

當你的應用程序支持VoIP,所以還需要播放和錄製音頻和您需要中斷非混音應用音頻,因此AVAudioSessionCategoryPlayAndRecord是正確的類別。當您播放/錄製音頻時,您也應該重新啓用音頻會話,以使該類別生效。

+0

謝謝,中斷開始時重新啓動AudioSession。 – ondermerol

0

試試這個代碼在你的應用程序暫停後臺音頻通話時,

[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error]; 

它是有用的,當其他應用程序使用AVAudioPlayer。

有關更多詳細信息請參考this Link

+0

感謝您的幫助,但您的建議是關於恢復與我的問題無關的其他應用音樂。 – ondermerol