From f2afd16d0bc7fc72e0b4d8400d74342244158674 Mon Sep 17 00:00:00 2001 From: Alex Shumihin Date: Wed, 5 Nov 2025 12:58:32 +0100 Subject: [PATCH] feat(ios): add PublicAudioSessionManager for audio session management (#4747) --- ios/Video/AudioSessionManager.swift | 8 ++++++++ ios/Video/PublicAudioSessionManager.swift | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 ios/Video/PublicAudioSessionManager.swift diff --git a/ios/Video/AudioSessionManager.swift b/ios/Video/AudioSessionManager.swift index da047820..dfe16de0 100644 --- a/ios/Video/AudioSessionManager.swift +++ b/ios/Video/AudioSessionManager.swift @@ -7,8 +7,12 @@ class AudioSessionManager { private var videoViews = NSHashTable.weakObjects() private var isAudioSessionActive = false private var remoteControlEventsActive = false + private var isAudioSessionManagementForcedDisabled = false private var isAudioSessionManagementDisabled: Bool { + if isAudioSessionManagementForcedDisabled { + return true + } // If no views are registered, disable audio session management if videoViews.allObjects.isEmpty { return true @@ -43,6 +47,10 @@ class AudioSessionManager { // MARK: - Public API + func setIsAudioSessionManagementForcedDisabled(disabled: Bool) { + isAudioSessionManagementForcedDisabled = disabled + } + func registerView(view: RCTVideo) { if videoViews.contains(view) { return diff --git a/ios/Video/PublicAudioSessionManager.swift b/ios/Video/PublicAudioSessionManager.swift new file mode 100644 index 00000000..a6989dee --- /dev/null +++ b/ios/Video/PublicAudioSessionManager.swift @@ -0,0 +1,9 @@ +import Foundation + +@objc +public class PublicAudioSessionManager: NSObject { + @objc + public static func setIsAudioSessionManagementDisabled(_ disabled: Bool) { + AudioSessionManager.shared.setIsAudioSessionManagementForcedDisabled(disabled: disabled) + } +}