/* * Diagnostic_Microphone.m * Diagnostic Plugin - Microphone Module * * Copyright (c) 2018 Working Edge Ltd. * Copyright (c) 2012 AVANTIC ESTUDIO DE INGENIEROS */ #import "Diagnostic_Microphone.h" @implementation Diagnostic_Microphone // Internal reference to Diagnostic singleton instance static Diagnostic* diagnostic; // Internal constants static NSString*const LOG_TAG = @"Diagnostic_Microphone[native]"; - (void)pluginInitialize { [super pluginInitialize]; diagnostic = [Diagnostic getInstance]; } /********************************/ #pragma mark - Plugin API /********************************/ - (void) isMicrophoneAuthorized: (CDVInvokedUrlCommand*)command { [self.commandDelegate runInBackground:^{ CDVPluginResult* pluginResult; @try { AVAudioSessionRecordPermission recordPermission = [AVAudioSession sharedInstance].recordPermission; if(recordPermission == AVAudioSessionRecordPermissionGranted) { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:1]; } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsInt:0]; } [diagnostic sendPluginResultBool:recordPermission == AVAudioSessionRecordPermissionGranted :command]; } @catch (NSException *exception) { [diagnostic handlePluginException:exception :command]; }; }]; } - (void) getMicrophoneAuthorizationStatus: (CDVInvokedUrlCommand*)command { [self.commandDelegate runInBackground:^{ @try { NSString* status; AVAudioSessionRecordPermission recordPermission = [AVAudioSession sharedInstance].recordPermission; switch(recordPermission){ case AVAudioSessionRecordPermissionDenied: status = AUTHORIZATION_DENIED; break; case AVAudioSessionRecordPermissionGranted: status = AUTHORIZATION_GRANTED; break; case AVAudioSessionRecordPermissionUndetermined: status = AUTHORIZATION_NOT_DETERMINED; break; } [diagnostic logDebug:[NSString stringWithFormat:@"Microphone authorization status is: %@", status]]; [diagnostic sendPluginResultString:status:command]; } @catch (NSException *exception) { [diagnostic handlePluginException:exception :command]; } }]; } - (void) requestMicrophoneAuthorization: (CDVInvokedUrlCommand*)command { [self.commandDelegate runInBackground:^{ @try { [[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) { [diagnostic logDebug:[NSString stringWithFormat:@"Has access to microphone: %d", granted]]; [diagnostic sendPluginResultBool:granted :command]; }]; } @catch (NSException *exception) { [diagnostic handlePluginException:exception :command]; } }]; } /********************************/ #pragma mark - Internals /********************************/ @end