diff --git a/ios/sdk/src/JitsiMeet.h b/ios/sdk/src/JitsiMeet.h index 850d6d36bd..cc26b1cb33 100644 --- a/ios/sdk/src/JitsiMeet.h +++ b/ios/sdk/src/JitsiMeet.h @@ -40,6 +40,13 @@ */ @property (nonatomic, nullable) JitsiMeetConferenceOptions *defaultConferenceOptions; +/** + * Custom RTCAudioDevice implementation. + * https://github.com/jitsi/webrtc/blob/M124/sdk/objc/components/audio/RTCAudioDevice.h + * https://github.com/mstyura/RTCAudioDevice + */ +@property (nonatomic, strong, nullable) id rtcAudioDevice; + #pragma mark - This class is a singleton + (instancetype _Nonnull)sharedInstance; diff --git a/ios/sdk/src/JitsiMeet.m b/ios/sdk/src/JitsiMeet.m index c7dcbf6b95..d19f5ac616 100644 --- a/ios/sdk/src/JitsiMeet.m +++ b/ios/sdk/src/JitsiMeet.m @@ -54,15 +54,6 @@ - (instancetype)init { if (self = [super init]) { -#if 0 - // Initialize WebRTC options. - WebRTCModuleOptions *options = [WebRTCModuleOptions sharedInstance]; - options.loggingSeverity = RTCLoggingSeverityInfo; -#endif - - // Initialize the one and only bridge for interfacing with React Native. - _bridgeWrapper = [[RCTBridgeWrapper alloc] init]; - // Initialize the listener for handling start/stop screensharing notifications. _screenshareEventEmiter = [[ScheenshareEventEmiter alloc] init]; @@ -142,6 +133,16 @@ return; }; + // Initialize WebRTC options. + WebRTCModuleOptions *options = [WebRTCModuleOptions sharedInstance]; + if (_rtcAudioDevice != nil) { + options.audioDevice = _rtcAudioDevice; + } +#if 0 + options.loggingSeverity = RTCLoggingSeverityInfo; +#endif + + // Initialize the one and only bridge for interfacing with React Native. _bridgeWrapper = [[RCTBridgeWrapper alloc] init]; } @@ -249,6 +250,8 @@ } - (RCTBridge *)getReactBridge { + // Initialize bridge lazily. + [self instantiateReactNativeBridge]; return _bridgeWrapper.bridge; }