diff --git a/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m b/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m index cd4fa138c..e636f290c 100644 --- a/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +++ b/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m @@ -4,8 +4,20 @@ #import #import "WebRTCModule.h" +#import "WebRTCAudioSession.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. */