From 281098b23511a45a80c466ff009d729c056f9bb8 Mon Sep 17 00:00:00 2001 From: cr0manty Date: Tue, 21 Sep 2021 18:31:50 +0300 Subject: [PATCH] add support for lightning microphone --- common/darwin/Classes/FlutterWebRTCPlugin.m | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/common/darwin/Classes/FlutterWebRTCPlugin.m b/common/darwin/Classes/FlutterWebRTCPlugin.m index 48f0b92543..87ed522ba3 100644 --- a/common/darwin/Classes/FlutterWebRTCPlugin.m +++ b/common/darwin/Classes/FlutterWebRTCPlugin.m @@ -75,7 +75,13 @@ - (instancetype)initWithChannel:(FlutterMethodChannel *)channel self.localTracks = [NSMutableDictionary new]; self.renders = [[NSMutableDictionary alloc] init]; #if TARGET_OS_IPHONE - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSessionRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil]; + AVAudioSession *session = [AVAudioSession sharedInstance]; + [session setCategory:AVAudioSessionCategoryMultiRoute withOptions: AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers error:nil]; + [session setActive:YES withOptions:kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation error:nil]; + + [session setActive:YES error:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didSessionRouteChange:) name:AVAudioSessionRouteChangeNotification object:session]; #endif return self; } @@ -88,6 +94,16 @@ - (void)didSessionRouteChange:(NSNotification *)notification { switch (routeChangeReason) { case AVAudioSessionRouteChangeReasonCategoryChange: { + AVAudioSession *session = [AVAudioSession sharedInstance]; + if ([session category] != AVAudioSessionCategoryMultiRoute) { + NSError* setCategoryError; + [session setCategory:AVAudioSessionCategoryMultiRoute withOptions: AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers + error:&setCategoryError]; + if(setCategoryError != nil) { + NSLog(@"setCategoryError: %@", setCategoryError); + } + } + NSError* error; [[AVAudioSession sharedInstance] overrideOutputAudioPort:_speakerOn? AVAudioSessionPortOverrideSpeaker : AVAudioSessionPortOverrideNone error:&error]; }