Captura de Documentos
Al invocar el módulo de captura de documentos, la biblioteca abre la cámara para iniciar el proceso de captura. Aparece una pantalla que muestra la vista activa de la cámara junto con instrucciones y recomendaciones para optimizar la fotografía. Una vez finalizado el proceso de captura, la biblioteca devuelve el control a la aplicación, entregando los resultados del proceso.
Compatibilidad y Requisitos
Integrar y Firmar el Framework
En Xcode, navega a la pestaña *“General”* del target de tu aplicación y localiza la sección *“Frameworks, Libraries and Embedded Content”*. Para el framework `DocumentCaptureUI.xcframework`, selecciona la opción “**Embed & Sign**” en la columna “**Embed**”.- En Xcode, ve a la pestaña “General” del target de tu aplicación.
- En “Frameworks, Libraries and Embedded Content”, agrega DocumentCaptureUI.xcframework y selecciona la opción “Embed & Sign” en la columna “Embed”.
Requisitos Previos
1. **Permisos de Cámara**: Agrega la clave de uso de la cámara al archivo `Info.plist`:Info.plist
<!-- Info.plist -->
<key>NSCameraUsageDescription</key>
<string>Por favor concede permiso para usar la cámara.</string>
- Agregar el Framework al Proyecto: En la vista (o estructura de SwiftUI) donde lanzarás la captura, importa el módulo:
• Arrastra DocumentCaptureUI.xcframework al proyecto.
• Asegúrate de marcar la casilla “Copy items if needed”.
• Selecciona el target o targets donde necesites usarlo.
- Importar el SDK:
En la vista (o estructura SwiftUI) donde lanzarás la captura, importa el módulo:
Import
import DocumentCaptureUI
Iniciando el Proceso de Captura de Documento
1. **Declara la Vista que Invoca el SDK**: En la aplicación anfitriona, crea o modifica la vista SwiftUI desde la cual iniciarás la captura. Puedes usar un botón que presente la vista del SDK utilizando un `fullScreenCover` o un `sheet`. Por ejemplo:DocumentCapture.swift
import SwiftUI
import DocumentCaptureUI
struct DocumentCapture: View, CaptureDocumentVCDelegate {
// Controla la presentación de la cámara
@State private var showDocumentCapture = false
var body: some View {
VStack {
Button("Iniciar captura") {
showDocumentCapture = true
}
}
.fullScreenCover(isPresented: $showDocumentCapture) {
// Se inicializa la vista del framework
CaptureUI(
token: "TOKEN_PROPORCIONADO_POR_DICIO",
urlVerify: "https://api.devdicio.net:8444/v1/sec_dev_pagos_middleware",
delegate: self
)
}
}
// MARK: - CaptureDocumentVCDelegate
/// Método del protocolo que recibe si la captura fue exitosa y la ruta de la imagen
func pictureFinished(isSuccessfull: Bool, route: String) {
print("Foto exitosa? \\(isSuccessfull) ruta: \\(route)")
// Cierra el fullScreenCover
showDocumentCapture = false
// Aquí puedes procesar la imagen según tu lógica de negocio
}
}
- Implementar el Protocolo
La vista que lanza el SDK debe adoptar el protocolo
CaptureDocumentVCDelegate. Esto requiere que implementes el siguiente método: •pictureFinished(isSuccessfull: Bool, route: String)
Este método te notifica sobre el resultado de la captura:
• isSuccessfull: true si la foto se guardó exitosamente; false en caso contrario.
• route: La ruta dentro del sistema de archivos de tu aplicación donde se guardó la foto. Si ocurre un error o la captura es cancelada, la ruta podría ser una cadena vacía o un valor temporal.
- Ejemplo Completo de Uso
Ejemplo Completo
struct DocumentCapture: View, CaptureDocumentVCDelegate {
@State private var showDocumentCapture = false
var body: some View {
VStack {
Button("Iniciar captura") {
showDocumentCapture = true
}
}
.fullScreenCover(isPresented: $showDocumentCapture) {
CaptureUI(
token: "TOKEN_PROPORCIONADO_POR_DICIO",
urlVerify: "https://ejemplo.servicio.com",
delegate: self
)
}
}
// MARK: - CaptureDocumentVCDelegate
func pictureFinished(isSuccessfull: Bool, route: String) {
print("Foto exitosa? \\(isSuccessfull) ruta: \\(route)")
// Cierra la pantalla
showDocumentCapture = false
// Aquí puedes manejar la ruta o mostrar un mensaje al usuario.
}
}
Referencia de la Vista Principal del Framework
Dentro del framework, la vista principal es CaptureUI.
Acepta los siguientes parámetros:
• token: Una cadena que contiene el token proporcionado.
• urlVerify: Una cadena que contiene la URL base utilizada para verificar el token.
• delegate: CaptureDocumentVCDelegate, utilizado para reportar los resultados.
Consideraciones Adicionales
• Manejo de Errores: El SDK maneja internamente los casos relacionados con permisos denegados o tokens no autorizados. Si el usuario niega el acceso a la cámara o micrófono, aparecerá una alerta indicándole que conceda los permisos necesarios.
• Estilos e Interfaz: Puedes personalizar la presentación (ej. usando .sheet en lugar de .fullScreenCover), siempre que el contenedor sea una vista de SwiftUI.
• Integración en Proyectos Existentes: Asegúrate de que tu proyecto soporte iOS 13+ (o la versión mínima que hayas definido). Este SDK no es compatible con versiones anteriores.
• Versionamiento: Revisa la versión específica de DocumentCaptureUI.xcframework que recibes, en caso de haber actualizaciones o cambios en la API.