objective-c card.io ios10 xcode8-beta2

objective c - requestAccessForMediaType se bloquea en iOS 10



objective-c card.io (3)

En mi aplicación estoy usando card.io para escanear tarjetas de crédito. Funciona bien en iOS 9. En iOS 10, la aplicación falla y no puedo encontrar el registro de fallos en la consola xcode 8 beta 2 ya que arroja una gran cantidad de mensajes basura.

Y luego verifiqué la configuración de privacidad para ver si la cámara está deshabilitada para mi aplicación, pero mi aplicación no aparece en esa sección. Parece que iOS 10 no tiene permiso para que mi aplicación use la cámara.

Utilizo el siguiente código para solicitar el permiso:

-(BOOL)checkCameraPermissions{ AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if(authStatus == AVAuthorizationStatusAuthorized) { // start card-io return YES; } else if(authStatus == AVAuthorizationStatusNotDetermined) { [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { if(granted) { //Start card-io [self testIsNewCard]; } }]; } else if (authStatus == AVAuthorizationStatusRestricted) { //Alert // Alert camera denied UIAlertController *aCon=[UIAlertController alertControllerWithTitle:@"Camera denied" message:@"Camera cannot be used" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *ok =[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [aCon dismissViewControllerAnimated:YES completion:nil]; }]; [aCon addAction:ok]; [self presentViewController:aCon animated:YES completion:nil]; return NO; } return NO; }

Cuando ejecuto este código, el authStatus se devuelve como AVAuthorizationStatusNotDetermined

y la aplicación se bloqueó justo después de que ingresara en el bloque requestAccessForMediaType:AVMediaTypeVideo

Hay muchos registros de basura que se muestran en la consola y no tengo ninguna pista para encontrar el mensaje de error.

Editar: encontré una opción para deshabilitar todos los registros innecesarios en xcode 8. Respuesta publicada here. Pero aún así, xcode no mostró ningún registro de bloqueo incluso después de deshabilitar la depuración de retroceso.

Mi xcode8 solo muestra este mensaje y la aplicación se cierra:

App[1124:226447] [access] <private>

También intenté restablecer la ubicación y la privacidad, pero aún así la aplicación se bloquea al intentar solicitar el acceso a los medios.

¿Alguna idea de por qué esto está sucediendo?


Agregué la clave "Privacy - Camera Usage Description" a mi archivo info.plist y ahora funciona.


En iOS 10 debe declarar el acceso a cualquier tipo de datos privados del usuario. Para ello, agregue una clave de uso a la lista de información de su aplicación. Para más información, por favor encuentre la captura de pantalla de abajo para el mismo.

Debe agregar la clave Privacidad - Descripción del uso de la cámara a la lista de información de su aplicación y su información de uso.

Para más información, por favor encuentre el siguiente GIF.

O si desea agregar a través de info.plist, entonces necesita agregar la clave NSCameraUsageDescription .

Simplemente copie y pegue debajo de la cadena en info.plist.

<key>NSCameraUsageDescription</key> <string>Take the photo</string>

Por favor, busque el GIF a continuación para obtener más información.

Para más información por favor revise el link .


iOS 10 ha continuado con la política de privacidad y ha implementado nuevas reglas de privacidad. Y debemos recordar implementarlos en nuestros próximos proyectos.

Para su problema, debe agregar la siguiente línea en info.plist

<!-- 📷 Camera --> <key>NSCameraUsageDescription</key> <string><Your description goes here></string>

A continuación se encuentran el resto de las reglas de privacidad:

<!-- 🖼 Photo Library --> <key>NSPhotoLibraryUsageDescription</key> <string><Your description goes here></string> <!-- 📷 Camera --> <key>NSCameraUsageDescription</key> <string><Your description goes here></string> <!-- 🎤 Microphone --> <key>NSMicrophoneUsageDescription</key> <string><Your description goes here></string> <!-- 📍 Location --> <key>NSLocationUsageDescription</key> <string><Your description goes here></string> <!-- 📍 Location When In Use --> <key>NSLocationWhenInUseUsageDescription</key> <string><Your description goes here></string> <!-- 📍 Location Always --> <key>NSLocationAlwaysUsageDescription</key> <string><Your description goes here></string> <!-- 📆 Calendars --> <key>NSCalendarsUsageDescription</key> <string><Your description goes here></string> <!-- ⏰ Reminders --> <key>NSRemindersUsageDescription</key> <string><Your description goes here></string> <!-- 🏊 Motion --> <key>NSMotionUsageDescription</key> <string><Your description goes here></string> <!-- 💊 Health Update --> <key>NSHealthUpdateUsageDescription</key> <string><Your description goes here></string> <!-- 💊 Health Share --> <key>NSHealthShareUsageDescription</key> <string><Your description goes here></string> <!-- ᛒ🔵 Bluetooth Peripheral --> <key>NSBluetoothPeripheralUsageDescription</key> <string><Your description goes here></string> <!-- 🎵 Media Library --> <key>NSAppleMusicUsageDescription</key> <string><Your description goes here></string>

Espero que esto ayude. :)