在我的应用程序中,我使用AVAudioSession播放音频流,在应用程序启动时会自动开始播放。
在应用程序的另一部分,如果用户导航,则会有一个webview,其中可能包含来自youtube的嵌入剪辑,soundcloud可能包含任何声音。 我希望主音频流暂停,以防用户选择播放webview中的声音。现在,如果用户选择在webview中播放剪辑,则声音混合,这是令人讨厌的,并且用户必须手动暂停主流。 有办法防止这种情况吗?我需要静音或暂停主流,以防用户选择听到嵌入的剪辑。
我在AppDelegate中使用的内容如下:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
AVAudioSession.sharedInstance().setActive(true)
答案 0 :(得分:0)
1。。您需要订阅AVAudioSession.interruptionNotification,才能停止播放音频
Swift 4.2
NotificationCenter.default.addObserver(self, selector: #selector(handleAudioSessionInterruption), name: AVAudioSession.interruptionNotification, object: AVAudioSession.sharedInstance())
@objc func handleAudioSessionInterruption(_ notification : Notification) {
guard let userInfo = notification.userInfo as? [String: AnyObject] else { return }
guard let rawInterruptionType = userInfo[AVAudioSessionInterruptionTypeKey] as? NSNumber else { return }
guard let interruptionType = AVAudioSession.InterruptionType(rawValue: rawInterruptionType.uintValue) else { return }
switch interruptionType {
case .began:
//stop play your audio
case .ended: //interruption ended
//do something if needed
}
}
2。。仅在设备上有效。不要在模拟器上测试