es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo presentar PHPhotoPicker que contiene solo fotos a las que el usuario ha otorgado permiso para utilizar en Swift?

Desde iOS 14 hay una nueva API para la selección de fotos llamada PHPhotoPicker. Junto con eso, se ha agregado una nueva funcionalidad que permite a los usuarios dar permiso para que solo ciertas fotos sean accedidas por la aplicación de iOS.

Considerando eso, quiero poder mostrar solo las fotos a las que el usuario ha otorgado acceso al abrir la instancia de PHPhotoPicker dentro de mi aplicación.

Código que tengo hasta ahora:

switch PHPhotoLibrary.authorizationStatus(for: .readWrite) {
case .authorized:
    // presentar PHPhotoPicker con todo el contenido de la biblioteca de fotos
    var config = PHPickerConfiguration()
    config.filter = .images
    let vc = PHPickerViewController(configuration: config)
    vc.delegate = self
    viewController.present(vc, animated: true, completion: nil)
case .limited:
    // presentar PHPhotoPicker con solo las fotos a las que el usuario ha otorgado acceso
}

Hasta donde he investigado, es posible presentar PHPPicker para que los usuarios elijan las fotos a las que otorgan acceso (ver código a continuación), pero no es posible mostrar un selector de imágenes que muestre solo las fotos con acceso otorgado.

PHPhotoLibrary.shared().presentLimitedLibraryPicker(from: self)

La documentación de Apple no es realmente extensa, lo cual me sorprende porque no tiene sentido poder presentar PHPhotoPicker que permite dar acceso a ciertas fotos, pero luego no tener una manera de presentar esas fotos en un selector de imágenes.

EDICIÓN:

Ejemplo de la aplicación de WhatsApp:
– En la configuración, el usuario puede seleccionar las fotos a las cuales está de acuerdo en que la aplicación tenga acceso.
– Luego, cuando abre la aplicación de WhatsApp y trata de enviar una foto, obtiene un selector de fotos marcado con el número 2 en la imagen a continuación:

WhatsApp First picture

  • Si no eligió “Fotos seleccionadas” sino que eligió “Todas las fotos”, entonces tendría un selector de fotos de toda la biblioteca mostrado en la segunda imagen, marcada con “1. Acceso a todas las fotos”.

Entonces mi pregunta es: ¿Cómo presentar un selector de imágenes con solo las fotos seleccionadas (segunda imagen número 2.) en lugar de un selector de imágenes con toda la biblioteca de fotos (segunda imagen número 1.)?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, después de investigar y revisar la documentación disponible, parece que actualmente no hay forma de presentar un selector de imágenes que muestre solo las fotos con acceso concedido utilizando la API de PHPhotoPicker o la API de PHPicker. El selector de biblioteca limitada introducido en iOS 14 solo permite el acceso a un conjunto limitado de fotos seleccionadas por el usuario, pero no proporciona una manera fácil de mostrar esas fotos utilizando un selector de imágenes.

    Como se muestra en el ejemplo de WhatsApp, la aplicación puede proporcionar un selector de imágenes personalizado que filtre las fotos a las que el usuario no ha otorgado acceso, pero esto requeriría un desarrollo personalizado y no utilizaría las APIs estándar de PHPhotoPicker o PHPicker.

    Una posible solución alternativa podría ser utilizar la API de PHAssetCollection para crear un nuevo álbum que contenga solo las fotos seleccionadas y luego presentar un selector de imágenes que muestre las fotos de ese álbum. Sin embargo, esto requeriría que el usuario seleccione manualmente las fotos a las que desea otorgar acceso y no proporcionaría una solución dinámica que se actualice automáticamente a medida que el usuario agregue o elimine fotos de su selección.

Comments are closed.