Skip to main content
Esta página corresponde al SDK 2.0.0. Autenticación: Autenticación y licencia. Enumeraciones de maquillaje / remodelado: Enumeraciones de parámetros.

Añadir la dependencia del SDK

Método A: CocoaPods (recomendado)

Error de compilación en Xcode 15+Si usas Xcode 15 o posterior, puedes encontrarte con un error Sandbox: rsync.samba deny(1). Lo provoca User Script Sandboxing.Solución:
  1. Selecciona tu Project en Xcode.
  2. Abre Build Settings.
  3. Busca ENABLE_USER_SCRIPT_SANDBOXING.
  4. Cambia el valor de Yes a No.

Método B: Framework manual

Descarga el SDK desde Descargas, copia Facebetter.framework al proyecto y incrusta la biblioteca dinámica con Embed & Sign.
Biblioteca enlazada en Xcode

Permisos

Añade el permiso de cámara en Info.plist solo si la app captura desde la cámara:

Importar

Configuración de logs

El logging está desactivado por defecto. Llama a setLogConfig: antes de crear el motor.

Crear el motor

Vincula el Bundle ID de iOS y luego pasa licenseToken o appId + appKey. Consulta Obtener AppID y AppKey y Autenticación y licencia. Prioridad: si licenseToken no está vacío (cadena del token de licencia, JSON {token} o contenido de .lic), el SDK lo valida en local. En caso contrario usa appId + appKey contra /facebetter/v2/auth.
createEngineWithConfig: devuelve una instancia, no un singleton.

Belleza de piel

La intensidad suele ser [0.0, 1.0]. Enumeraciones de estilo: Enumeraciones de parámetros.

Solo piel

Cuando está activado, suavizado / blanqueamiento / rubor se aplican solo a la piel detectada.

Remodelado facial

El rango de setReshape:intensity: es [-1.0, 1.0]. 0 desactiva. Parámetros: FBReshape_FaceThinFBReshape_BrowThickness (025). Significados: Enumeraciones de parámetros.

Remodelado corporal

El rango de setBodyReshape:intensity: es [0.0, 1.0]. 0 desactiva. Registra resource_body.fbd con addResourcePack: primero. Parámetros: FBBodyReshape_BodySlimFBBodyReshape_TorsoLong (08). Consulta Enumeraciones de parámetros y Paquetes de recursos opcionales.

Maquillaje

Intensidad, forma y color son llamadas separadas. Estilos completos: Enumeraciones de parámetros.

Fondo virtual

La máscara predeterminada es segmentación de retrato. Intensidad de desenfoque [0.0, 1.0]; 0 borra el desenfoque. La ruta de imagen debe ser un png/jpg no vacío.

Croma

El croma solo sustituye la máscara. El relleno sigue siendo desenfoque o imagen de reemplazo.

Filtros y stickers

Pasa una ruta de archivo .fbd o bytes en memoria.
Los stickers 3D necesitan el paquete opcional resource_3d.fbd (no está en el framework). Consulta Paquetes de recursos opcionales:

Callbacks y estadísticas

Procesar imágenes

FBImageFrame admite I420, NV12, NV21, RGB, RGBA, BGR, BGRA, archivo, textura y UIImage.
Configura primero type y luego llama a processImage: (no hay un argumento de modo extra). El formato de salida coincide con el de entrada.
FBFrameTypeVideo es para flujos en tiempo real; FBFrameTypeImage para estáticos.
Rotar / espejo / convertir / guardar:
Planos YUV: dataY, dataU, dataV, dataUV y strideY / strideU / strideV / strideUV.

Textura externa

Crea el motor en el hilo OpenGL ES y configura externalContext = YES. Las texturas de entrada y salida deben compartir ese contexto.
Parámetros de textura recomendados: GL_LINEAR, GL_CLAMP_TO_EDGE. El motor no elimina tu textura de entrada. La textura de salida la posee el SDK. Para TRTC / Agora / LiveKit: Integración con terceros.

Ciclo de vida

Mantén el motor con una referencia strong durante la sesión. Ponlo a nil cuando se destruya el ViewController. Al salir de la página, detén la captura para dejar de llamar a processImage:.

Relacionado