ios - puedo - Acceso a la cámara y a la biblioteca de fotos
permitir acceso a camara iphone (4)
Si está desarrollando la aplicación en ios 10, entonces debe agregar la configuración de permisos de privacidad en su info.plist y describir algo donde necesite esta privacidad.
Lista de configuración de privacidad:
Bluetooth Sharing - NSBluetoothPeripheralUsageDescription
Calendario - NSCalendarsUsageDescription
CallKit - NSVoIPUsageDescription
Cámara - NSCameraUsageDescription
Contactos - NSContactsUsageDescription
Salud - NSHealthShareUsageDescription & NSHealthUpdateUsageDescription
HomeKit - NSHomeKitUsageDescription
Ubicación - NSLocationUsageDescription, NSLocationAlwaysUsageDescription,
NSLocationWhenInUseUsageDescription
Biblioteca de medios - NSAppleMusicUsageDescription
Micrófono - NSMicrophoneUsageDescription
Motion - NSMotionUsageDescription
Fotos - NSPhotoLibraryUsageDescription
Recordatorios - NSRemindersUsageDescription
Reconocimiento de voz - NSSpeechRecognitionUsageDescription
SiriKit - NSSiriUsageDescription
Proveedor de TV - NSVideoSubscriberAccountUsageDescription
En mi aplicación iOS tengo un ImageView y dos botones para abrir la cámara y la fototeca. Cuando hago clic en uno de los botones, la aplicación se cierra. (Estoy ejecutando la aplicación en mi dispositivo, no en el simulador) ¿Qué debo cambiar en mi código?
class PhotoViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var ImageDisplay: UIImageView!
@IBOutlet weak var libraryOutlet: UIButton!
@IBOutlet weak var cameraOutlet: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func openCameraButton(_ sender: UIButton) {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .camera
present(picker, animated: true, completion: nil)
}
@IBAction func openLibraryButton(_ sender: UIButton) {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .photoLibrary
present(picker, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
ImageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage
dismiss(animated: true, completion: nil)
}
}
Si está ejecutando en iOS10, debe agregar entradas en Info.plist para acceder a la cámara
pon esta clave en Info.plist
Descripción de uso de la cámara de privacidad
http://useyourloaf.com/blog/privacy-settings-in-ios-10/
Si no, la aplicación se bloqueará como está sucediendo en su caso
En iOS 10 necesita permiso para acceder a photoLibrary o a la cámara agregando las teclas a continuación a su lista y necesita usar el método de delegado adecuado.
Para acceder a la biblioteca de fotos:
@IBAction func library(_ sender: UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: nil)
}
}
Para acceder a la cámara del dispositivo:
@IBAction func camera(_ sender: UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
}
Para seleccionar y visualizar la imagen:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
ImageDisplay.image = image
}
picker.dismiss(animated: true, completion: nil);
}
Salida:
iOS 10 no tiene permiso para acceder al contacto, la cámara, la biblioteca de fotos, la ubicación del usuario, etc. hasta que mencionemos por qué lo estamos usando. Abra su plist como código fuente. Agregue el siguiente código bajo dict Ahora ejecútelo de nuevo.
<!-- 🖼 Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME) photo use</string>
<!-- 📷 Camera -->
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera use</string>
<!-- 📍 Location -->
<key>NSLocationUsageDescription</key>
<string>$(PRODUCT_NAME) location use</string>
<!-- 📒 Contacts -->
<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) contact use</string>