98 lines
3.1 KiB
Objective-C
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
|