Esta página corresponde al SDK 2.0.0. Autenticación: Autenticación y licencia. Enumeraciones: Enumeraciones de parámetros.
Integración
La creación del motor devuelve nil
- Confirma que está configurado
licenseTokenoappId+appKey. El token gana si ambos están presentes. - Vincula el Bundle ID de la app en la consola.
- La autenticación en línea necesita red hacia
/facebetter/v2/auth. - Activa logs antes de
createEngineWithConfig:y observa los eventos1(licencia fallida) y101(init fallido). - CocoaPods:
pod 'Facebetter', '2.0.0'. Abre el.xcworkspace, no el.xcodeproj.
Faltan headers o clases
- Importa
#import <Facebetter/FBBeautyEffectEngine.h>. - Para un
.frameworkmanual, configura Embed & Sign. - Clean Build Folder y recompila.
- Si los scripts de CocoaPods fallan en Xcode 15+, pon
ENABLE_USER_SCRIPT_SANDBOXINGen No.
Errores de enlace en runtime / dyld
- La arquitectura debe ser arm64.
- Deployment target iOS 12.0+.
- Confirma que
Facebetter.frameworkestá en Embed Frameworks.
Autenticación
licenseToken frente a appId / appKey
Si licenseToken no está vacío, el SDK verifica ese token / JSON {token} / .lic en local y no envía appId / appKey. En caso contrario usa autenticación en línea. Detalles: Autenticación y licencia.
Evento 1 o 101
Falló la licencia o la inicialización. Revisa Bundle ID, plan, caducidad del token y logs. Que la creación devuelva un objeto no nulo no basta: escucha onEngineEvent.
Belleza
El efecto es demasiado débil o demasiado fuerte
- Piel / maquillaje / filtro:
[0.0, 1.0]. - Remodelado:
[-1.0, 1.0]consetReshape:intensity:(0desactiva). - Intensidad
0desactiva ese efecto. - Solo piel:
setBeautySkinOnly:.
Valores de enumeración de maquillaje / remodelado
No copies tablas en comentarios del código: usa Enumeraciones de parámetros. Los nombres de Objective-C son comoFBReshape_FaceThin, FBLipstickColor_Rouge.
Filtros, stickers, fondo virtual
El filtro o el sticker no hace nada
Pasa la ruta o los bytes.fbd:
processImage: (hilo GL). Una ruta vacía / datos nil devuelve FBErrorCode_InvalidArgument. Un archivo que falta devuelve FBErrorCode_IO.
Fondo virtual
Procesamiento
processImage: devuelve nil
- El motor es
nilo falló el init (-2/ evento101). - Fotograma no válido (tamaño cero, formato no admitido).
externalContext = YESpero el hilo actual no tiene contexto GL.- Trátalo como fallo de proceso (
FBErrorCode_Process).
Tipo de fotograma
ConfiguraimageFrame.type a FBFrameTypeImage (0) o FBFrameTypeVideo (1). No pases un argumento de modo de proceso.
Conversión de formato
Usaconvert: y los accesores del fotograma:
dataY / dataU / dataV / dataUV y el stride* correspondiente.
UIImage
Vista previa de cámara
- Lee
CVPixelBufferdeAVCaptureVideoDataOutput. - Construye
FBImageFrameconcreateWithNV12:...ocreateWithBGRA:.... - Configura
type = FBFrameTypeVideo, opcionalmentesetMirror:@"horizontal". processImage:y luego muestra[output data]o[output texture].
Rendimiento y memoria
- Usa
FBFrameTypeVideopara directo; baja la resolución sigetStats.avgProcessTimeMses alto. - Un motor, cola serial; no proceses en el hilo principal.
- Libera fotogramas con ARC (
frame = nil). Reutiliza buffers de captura. - Evita
setFilter:/setSticker:en cada fotograma.
Logging
0 correcto, -1 argumento no válido, -2 no inicializado. Lista completa: Manejo de errores.
Versión
- iOS 12.0+, arm64.
- CocoaPods:
pod 'Facebetter', '2.0.0'. - Tras actualizar:
pod install, Clean Build Folder, vuelve a probar autenticación yprocessImage:.
Hilos
- Motor predeterminado: cola serial para todos los
processImage:y setters que tocan recursos GL. externalContext = YES: crea + procesa en el hilo GL.- Actualiza la UI solo en la cola principal.

