Grabadora de Video
- Verificación del Token: Recibe un token y URL, lo verifica y procede a la grabación del video si es válido.
- Grabación de Video: Solicita acceso a la cámara y micrófono para grabar un clip de 15 segundos con indicadores visuales.
- Retorno de Resultados: Invoca un callback
onFinishcon el estado del resultado y la ruta local del archivo de video.
Compatibilidad y Requisitos
Incrustar y Firmar el Framework
En Xcode, navega a la pestaña “General” del target de la aplicación, localiza la sección “Frameworks, Libraries and Embedded Content” y para el framework VideoRecorderUI.xcframework, selecciona la opción “Embed & Sign” en la columna “Embed”.
Requisitos Previos
Permisos de cámara y micrófono: Asegúrate de agregar los siguientes permisos en la sección Info del target del proyecto o al archivo Info.plist:
Info.plist
<key>NSCameraUsageDescription</key>
<string>Por favor concede permiso para usar la cámara. Por Dicio</string>
<key>NSMicrophoneUsageDescription</key>
<string>Por favor concede permiso de micrófono para la grabadora de video por Dicio.</string>
Uso en SwiftUI
1. Importar el framework En el archivo donde tienes intención de iniciar la grabación de video, importa el framework:Import
import VideoRecorderUI
• token: el valor obtenido de tu servicio/entorno de Dicio.
• urlVerify: la URL donde se validará el token.
• onFinish: un callback que recibe (isSuccessful, route) al completar.
Ejemplo básico en SwiftUI:
Ejemplo de Uso
struct VideoRecorderExample: View {
@State private var showRecorder = false
@State private var resultPath: String = ""
var body: some View {
VStack {
Button("Iniciar grabación") {
showRecorder = true
}
// Presenta el framework a pantalla completa
.fullScreenCover(isPresented: $showRecorder) {
VideoRecorderVC(
token: "TU_TOKEN_PROPORCIONADO",
urlVerify: "https://ejemplo.servicio.com",
onFinish: { isSuccessful, route in
if isSuccessful {
print("Video guardado en: \\(route)")
resultPath = route
} else {
print("Error o cancelación")
}
}
)
}
Text("Ruta del último video: \\(resultPath)")
.font(.footnote)
}
}
}
• @State private var showRecorder = false controla si la vista del framework se presenta como un fullScreenCover.
• Cuando showRecorder es true, se lanza VideoRecorderVC.
• El callback onFinish retorna el resultado:
isSuccessful = true=> La grabación fue exitosa, yroutecontendrá la ruta local.isSuccessful = false=> Ocurrió un error o el usuario canceló.
- Manejo del Resultado de Grabación
El bloque
onFinishse ejecuta cuando la grabación termina o si se cierra el flujo. Por ejemplo:
Manejo del resultado
onFinish: { isSuccessful, route in
if isSuccessful {
// El video se guarda en 'route'
print("Video guardado en: \\(route)")
// Aquí puedes subirlo a tu servidor o usarlo como necesites.
} else {
// Hubo algún problema o se canceló
print("Error o cancelación")
}
}
Nota: El archivo de video permanece en el directorio temporal o de documentos de tu aplicación (dependiendo de la implementación exacta del SDK).
Asegúrate de gestionar su ciclo de vida de acuerdo a tus necesidades (por ejemplo, copiándolo a otro directorio seguro o subiéndolo inmediatamente si no deseas almacenarlo localmente).
Ejemplo Completo
Ejemplo Completo
import SwiftUI
import VideoRecorderUI
struct VideoRecorder: View {
@State private var showRecorder = false
@State private var resultPath: String = ""
var body: some View {
VStack {
Button("Iniciar grabación") {
showRecorder = true
}
.fullScreenCover(isPresented: $showRecorder) {
// Llamada al framework
VideoRecorderVC(
token: AppConfig.shared.bearerToken,
urlVerify: AppConfig.shared.laUrlVerifica,
onFinish: { isSuccessful, route in
// Maneja el resultado
if isSuccessful {
print("Video guardado en: \\(route)")
resultPath = route
} else {
print("Error o cancelación")
}
}
)
}
Text("Ruta del último video: \\(resultPath)")
.font(.footnote)
}
}
}
- El botón "Iniciar Grabación" abre la hoja (sheet) completa.
- Dentro de esa hoja,
VideoRecorderVCrealiza internamente la verificación del token y, si es exitosa, procede con la grabación del video. - Al completarse (ya sea exitosamente o resultando en un error), cierra la hoja e invoca tu callback.
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 especificado). Este SDK no es compatible con versiones anteriores.
• Versionamiento: Revisa la versión específica de VideoRecorderUI.xcframework que recibes, en caso de haber actualizaciones o cambios en la API.