Solicitar permiso para la cámara y la biblioteca en iOS 10 – Info.plist

Implementé WKWebView en una aplicación. hay una entrada de archivo en la página web mostrada donde debería importar una imagen de fotos. Cada vez que presiono esa entrada y selecciono “Tomar foto” o “Biblioteca de fotos”, la aplicación se bloquea repentinamente, lo que creo es porque la aplicación no tiene permiso para tomar una foto o importar desde la biblioteca.

¿Cómo presiono una solicitud de permiso cuando el usuario selecciona uno de los métodos mencionados (Foto o Fototeca)?

Yo uso Swift 3.0 con WKWebView.

Debe agregar el permiso a continuación en Info.plist.

Cámara:

Key : Privacy - Camera Usage Description Value : $(PRODUCT_NAME) camera use 

Foto:

 Key : Privacy - Photo Library Usage Description Value : $(PRODUCT_NAME) photo use 

También puede solicitar el acceso mediante progtwigción, que prefiero porque en la mayoría de los casos necesita saber si tomó el acceso o no.

Swift 4 actualización:

  //Camera AVCaptureDevice.requestAccess(for: AVMediaType.video) { response in if response { //access granted } else { } } //Photos let photos = PHPhotoLibrary.authorizationStatus() if photos == .notDetermined { PHPhotoLibrary.requestAuthorization({status in if status == .authorized{ ... } else {} }) } 

No compartes el código, por lo que no estoy seguro de que sea útil para ti, pero en general lo utilizo como una buena práctica.

Archivo: Info.plist

Para la cámara :

 NSCameraUsageDescription You can take photos to document your job. 

Para la Biblioteca de fotos , querrá que esta permita que el usuario de la aplicación explore la biblioteca de fotos.

 NSPhotoLibraryUsageDescription You can select photos to attach to reports. 

Swift 4

Archivo: Info.plist

Cámara

 NSCameraUsageDescription camera description. 

Fotos

 NSPhotoLibraryUsageDescription  photos description. 

Guardar fotografías

  NSPhotoLibraryAddUsageDescription  photos add description. 

Ubicación

  NSLocationWhenInUseUsageDescription  location description. 

Apple Music:

 NSAppleMusicUsageDescription My description about why I need this capability 

Calendario

 NSCalendarsUsageDescription My description about why I need this capability 

Siri

 NSSiriUsageDescription My description about why I need this capability 

Use los ajustes de plist mencionados anteriormente y el accesorio apropiado (AVCaptureDevice o PHPhotoLibrary), pero también avíseles y envíelos a la configuración si realmente los necesita, como los siguientes:

Swift 4.0 y 4.1

 func proceedWithCameraAccess(identifier: String){ // handler in .requestAccess is needed to process user's answer to our request AVCaptureDevice.requestAccess(for: .video) { success in if success { // if request is granted (success is true) DispatchQueue.main.async { self.performSegue(withIdentifier: identifier, sender: nil) } } else { // if request is denied (success is false) // Create Alert let alert = UIAlertController(title: "Camera", message: "Camera access is absolutely necessary to use this app", preferredStyle: .alert) // Add "OK" Button to alert, pressing it will bring you to the settings app alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!) })) // Show the alert with animation self.present(alert, animated: true) } } } 

Para solicitar permiso para la aplicación de fotos, debe agregar este código (Swift 3) :

 PHPhotoLibrary.requestAuthorization({ (newStatus) in if newStatus == PHAuthorizationStatus.authorized { /* do stuff here */ } }) 

Swift 4 La forma más fácil de agregar permisos sin tener que hacerlo programáticamente es abrir su archivo info.plist y seleccionar + junto a la lista de propiedades de información y desplazarse por la lista desplegable a las opciones de privacidad y seleccionar Descripción de uso de la cámara de privacidad para acceder a la cámara o a la Descripción de uso de la Biblioteca de fotos de privacidad para acceder a la Biblioteca de fotos. Complete el valor de Cadena a la derecha después de hacer su selección para incluir el texto que le gustaría que se le muestre a su usuario cuando la ventana emergente de alerta solicite permisos. Permiso de la cámara / biblioteca de fotos