如何在不接收AVAudioSessionInterruptionTypeEnded的情况下知道音频中断已结束?

时间:2017-06-20 09:57:51

标签: ios avaudiosession

我在我的VOIP应用程序中使用AVAudioSession(也使用CallKit)。 我知道会话可能被许多事情打断,例如第二次来电。 Apple指出了本页的底部: https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/HandlingAudioInterruptions/HandlingAudioInterruptions.html#//apple_ref/doc/uid/TP40007875-CH4-SW5

  

"注意:无法保证开始中断会有   相应的结束中断。您的应用需要了解一个开关   到前台运行状态或用户按下播放按钮。在   无论哪种情况,请确定您的应用是否应重新激活其音频   。会话"

在提到的页面上有一个特例的例子,当用户忽略传入呼叫时,在这种情况下发送AVAudioSessionInterruptionTypeEnded。

但是我应该怎么做才能知道中断何时在其他情况下结束(在这种情况下我永远不会收到AVAudioSessionInterruptionTypeEnded)? (例如,当用户接听第二个电话并让我等待,然后他结束第二个电话?)

谢谢!

1 个答案:

答案 0 :(得分:0)

我记得当你使用CallKit时,除了那些其他的voip应用程序或本机电话之外,没有使用音乐之类音频的应用会中断你的应用。 在这种情况下,您的通话将根据您对通话套件ui的响应而结束/保持(如果您的通话不支持,则不会显示您的按钮接受并保持)----然后,您可以获得来自CallKit委托方法的回调。

Interruption api在不使用CallKit时起作用,而且CallKit app在音频会话上的优先级高于不使用它的人。