From 9bc57046374567c68e320866b351c6ea2bf40394 Mon Sep 17 00:00:00 2001 From: Denis Koltovich Date: Tue, 2 Dec 2025 14:31:48 +0300 Subject: [PATCH 1/2] fix: Optimization audio session closing --- ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m | 11 ++++++++++ .../WebRTCModule+RTCPeerConnection.m | 4 ---- src/RTCAudioSession.ts | 20 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m b/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m index cd4fa138c..59791f552 100644 --- a/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +++ b/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m @@ -6,6 +6,17 @@ #import "WebRTCModule.h" @implementation WebRTCModule (RTCAudioSession) +RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(unlockPeerClosing) { + WebRTCAudioSession* session = [WebRTCAudioSession shared]; + [session setAudioSessionEnabled:NO]; + return nil; +} + +RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(lockPeerClosing) { + WebRTCAudioSession* session = [WebRTCAudioSession shared]; + [session setAudioSessionEnabled:YES]; + return nil; +} RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(audioSessionDidActivate) { [[RTCAudioSession sharedInstance] audioSessionDidActivate:[AVAudioSession sharedInstance]]; diff --git a/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m b/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m index 1a16b395c..0e636251a 100644 --- a/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m +++ b/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m @@ -356,11 +356,7 @@ - (void)checkAudioLevel { return; } - WebRTCAudioSession* session = [WebRTCAudioSession shared]; - - [session closeConnection:^{ [peerConnection close]; - }]; } RCT_EXPORT_METHOD(peerConnectionDispose : (nonnull NSNumber *)objectID) { diff --git a/src/RTCAudioSession.ts b/src/RTCAudioSession.ts index f2996e7ae..8c5478b2a 100644 --- a/src/RTCAudioSession.ts +++ b/src/RTCAudioSession.ts @@ -3,6 +3,26 @@ import { NativeModules, Platform } from 'react-native'; const { WebRTCModule } = NativeModules; export default class RTCAudioSession { + /** + * To be called when close peer connection to fix issue with no mic sound in group call when + */ + static unlockPeerClosing() { + // Only valid for iOS + if (Platform.OS === 'ios') { + WebRTCModule.unlockPeerClosing(); + } + } + + /** + * To be called when peer connection closed to fix issue with no mic sound in group call when + */ + static lockPeerClosing() { + // Only valid for iOS + if (Platform.OS === 'ios') { + WebRTCModule.lockPeerClosing(); + } + } + /** * To be called when CallKit activates the audio session. */ From 17d861d5e312a4838bdbeb7f8a7ce40b73cf93a9 Mon Sep 17 00:00:00 2001 From: Denis Koltovich Date: Tue, 2 Dec 2025 14:54:34 +0300 Subject: [PATCH 2/2] fix: Missing import --- ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m | 1 + 1 file changed, 1 insertion(+) diff --git a/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m b/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m index 59791f552..e636f290c 100644 --- a/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +++ b/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m @@ -4,6 +4,7 @@ #import #import "WebRTCModule.h" +#import "WebRTCAudioSession.h" @implementation WebRTCModule (RTCAudioSession) RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(unlockPeerClosing) {