permitir - iOS verifica si la aplicación tiene acceso al micrófono
permitir acceso a camara iphone (6)
Con la introducción de iOS 7, las aplicaciones deben solicitar acceso al micrófono cuando desean grabar audio.
¿Cómo compruebo si la aplicación tiene acceso al micrófono?
En el iOS 8 SDK puedo usar la enumeración AVAudioSessionRecordPermission
, pero ¿cómo puedo verificar esto en iOS 7?
Información:
No quiero solicitar permiso, solo quiero comprobar si la aplicación tiene acceso al micrófono. (Me gusta el acceso a la ubicación):
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
// Do something
}
Como ninguna de las otras respuestas aquí se menciona aquí, debe agregar los permisos a su info.plist. Específicamente, agregue una entrada para:
Privacidad - Descripción del uso del micrófono
Para el valor de cadena, ingrese algo como: (nombre de la aplicación) necesita acceso a su micrófono.
De lo contrario, obtendrá un accidente misterioso
En iOS7
no hay forma de obtener el estado actual de la microphone authorization
del microphone authorization
. Han dado la enumeración en iOS8
como AVAudioSessionRecordPermission
En iOS7
tienes que solicitar permiso cada vez con
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
NSLog(@"Permission granted");
}
else {
NSLog(@"Permission denied");
}
}];
La misma pregunta se ha formulado anteriormente, pero no existe una api con la que se conozca el estado actual de iOS8
Puede consultar el permiso Comprobar el micrófono en iOS 7 sin mostrar el indicador
Solución:
Otra opción es que puede mostrar la popup
o pedir permiso por primera vez y guardar los estados de la opción de usuario seleccionada en NSUserDefaults
y, a partir de entonces, no pedir permiso. Desde los documentos, explícitamente no necesita llamar a esto si no necesita obtener el permiso del usuario. AVAudioSession
primera vez que AVAudioSession lo llamará automáticamente cuando intente grabar
La grabación de audio requiere permiso explícito del usuario. La primera vez que la sesión de audio de su aplicación intenta utilizar una ruta de entrada de audio mientras usa una categoría que permite la grabación (consulte “Categorías de sesión de audio”), el sistema solicita automáticamente al usuario el permiso; alternativamente, puede llamar a requestRecordPermission: para avisar al usuario en el momento de su elección
Hay otra manera de intentar el siguiente código para ios 7 y 8:
let microPhoneStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeAudio)
switch microPhoneStatus {
case .Authorized:
// Has access
case .Denied:
// No access granted
case .Restricted:
// Microphone disabled in settings
case .NotDetermined:
// Didn''t request access yet
}
Puede verificar con recordPermission() , que está disponible desde iOS 8.
Tenga en cuenta que a partir de iOS 10, debe establecer la propiedad NSMicrophoneUsageDescription
en su info.plist
para los permisos de micrófono. Debe proporcionar un valor que se mostrará en la solicitud de acceso y, si está localizando su aplicación, asegúrese de incluir las cadenas de plist para la traducción.
De lo contrario, se producirá un bloqueo al intentar acceder al micrófono.
Esta respuesta se ha limpiado de nuevo para Swift 4.x
import AVFoundation
switch AVAudioSession.sharedInstance().recordPermission {
case AVAudioSessionRecordPermission.granted:
print("Permission granted")
case AVAudioSessionRecordPermission.denied:
print("Pemission denied")
case AVAudioSessionRecordPermission.undetermined:
print("Request permission here")
AVAudioSession.sharedInstance().requestRecordPermission({ (granted) in
// Handle granted
})
}
Swift 3.0
Esto se ha probado en un entorno iOS 10 para verificar el estado actual del micrófono.
import AVFoundation
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
print("Permission granted")
case AVAudioSessionRecordPermission.denied:
print("Pemission denied")
case AVAudioSessionRecordPermission.undetermined:
print("Request permission here")
default:
break
}
C objetivo
He probado este código con iOS 8 para verificar el permiso del micrófono y obtener el estado actual.
switch ([[AVAudioSession sharedInstance] recordPermission]) {
case AVAudioSessionRecordPermissionGranted:
break;
case AVAudioSessionRecordPermissionDenied:
break;
case AVAudioSessionRecordPermissionUndetermined:
// This is the initial state before a user has made any choice
// You can use this spot to request permission here if you want
break;
default:
break;
}
Como siempre, asegúrate de import AVFoundation
.
Código de la solución completa de Swift 3
func checkMicPermission() -> Bool {
var permissionCheck: Bool = false
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
permissionCheck = true
case AVAudioSessionRecordPermission.denied:
permissionCheck = false
case AVAudioSessionRecordPermission.undetermined:
AVAudioSession.sharedInstance().requestRecordPermission({ (granted) in
if granted {
permissionCheck = true
} else {
permissionCheck = false
}
})
default:
break
}
return permissionCheck
}
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
if (granted) {
// Microphone enabled code
}
else {
// Microphone disabled code
}
}];
E incluye <AVFoundation/AVAudioSession.h>