Vmeda.Online/cordova-plugin-moodleapp/src/ios/Diagnostic_Microphone.m

98 lines
3.1 KiB
Objective-C

/*
* 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