【发布时间】:2023-03-24 22:36:01
【问题描述】:
我们正在开发一个 VOIP 应用程序,当有通话时,我们不希望其他应用程序播放音乐或其他东西(例如 Whatsapp)。
请问有什么方法可以正常操作吗?
编辑 1:
我认为我们需要从监听观察者开始 AVAudioSessionInterruptionNotification。
接受的答案编辑 2:
当声音中断开始时,再次尝试只激活 AudioSession。这行得通。谢谢KudoCC。
【问题讨论】:
-
“活动呼叫”是指系统电话呼叫吗?还是您应用的 VOIP 通话?为什么你认为观察
AVAudioSessionInterruptionNotification会起作用? -
这是 VOIP 通话(也使用 CallKit,iOS 10 功能向系统报告)。如果我们观察到该通知,我们可以再次激活 AudioSession 并控制电话音频输出。但是我试过了,还是不行。
-
您的应用是否使用
AVAudioSessionCategoryPlayAndRecord类别?您可以在播放/录制音频时尝试重新激活音频会话,如果您成功激活音频会话,其他应用将停止播放。 -
是的,我们使用该类别,实际上您的建议是公认的答案。它有效,谢谢。我尝试了将类别再次设置为 AVAudioSessionCategoryPlayAndRecord 然后激活会话的方式,但它昨天没有工作(它无法激活会话,因此无法停止其他应用程序音乐)。只有激活会话有效:) 谢谢。
-
你介意我写下我的答案吗?
标签: ios objective-c avaudiosession