Esta página corresponde ao SDK 2.0.0. Autenticação: Autenticação e licença. Enums: Enums de parâmetros.
Integração
A criação do mecanismo retorna nil
- Confirme se
licenseTokenouappId+appKeyestá definido. O token prevalece se os dois estiverem presentes. - Vincule o Bundle ID do app no console.
- A autenticação online precisa de rede até
/facebetter/v2/auth. - Ative os logs antes de
createEngineWithConfig:e observe os eventos1(falha de licença) e101(falha de init). - CocoaPods:
pod 'Facebetter', '2.0.0'. Abra o.xcworkspace, não o.xcodeproj.
Headers ou classes ausentes
- Importe
#import <Facebetter/FBBeautyEffectEngine.h>. - Para um
.frameworkmanual, defina Embed & Sign. - Clean Build Folder e reconstrua.
- Se os scripts do CocoaPods falharem no Xcode 15+, defina
ENABLE_USER_SCRIPT_SANDBOXINGcomo No.
Erros de link / dyld em runtime
- A arquitetura precisa ser arm64.
- Deployment target iOS 12.0+.
- Confirme que
Facebetter.frameworkestá em Embed Frameworks.
Autenticação
licenseToken vs appId / appKey
Se licenseToken não estiver vazio, o SDK verifica esse token / JSON {token} / .lic localmente e não envia appId / appKey. Caso contrário, usa autenticação online. Detalhes: Autenticação e licença.
Evento 1 ou 101
Licença ou init falhou. Verifique Bundle ID, plano, expiração do token e logs. Criar um objeto não nulo não basta — escute onEngineEvent.
Beleza
O efeito está fraco ou forte demais
- Pele / maquiagem / filtro:
[0.0, 1.0]. - Remodelagem:
[-1.0, 1.0]viasetReshape:intensity:(0desliga). - Intensidade
0desativa esse efeito. - Somente pele:
setBeautySkinOnly:.
Valores de enum de maquiagem / remodelagem
Não copie tabelas para comentários no código do app — use Enums de parâmetros. Os nomes em Objective-C são comoFBReshape_FaceThin, FBLipstickColor_Rouge.
Filtros, adesivos, fundo virtual
O filtro ou o adesivo não faz nada
Passe o caminho ou os bytes.fbd:
processImage: (thread GL). Caminho vazio / dados nil retorna FBErrorCode_InvalidArgument. Arquivo ausente retorna FBErrorCode_IO.
Fundo virtual
Processamento
processImage: retorna nil
- O mecanismo é
nilou o init falhou (-2/ evento101). - Quadro inválido (tamanho zero, formato não suportado).
externalContext = YESmas o thread atual não tem contexto GL.- Trate como falha de processamento (
FBErrorCode_Process).
Tipo de quadro
DefinaimageFrame.type como FBFrameTypeImage (0) ou FBFrameTypeVideo (1). Não passe um argumento de modo de processamento.
Conversão de formato
Useconvert: e os acessores do quadro:
dataY / dataU / dataV / dataUV e os stride* correspondentes.
UIImage
Prévia da câmera
- Leia
CVPixelBufferdeAVCaptureVideoDataOutput. - Monte
FBImageFramecomcreateWithNV12:...oucreateWithBGRA:.... - Defina
type = FBFrameTypeVideo, opcionalmentesetMirror:@"horizontal". processImage:e, em seguida, exiba[output data]ou[output texture].
Desempenho e memória
- Use
FBFrameTypeVideoao vivo; reduza a resolução segetStats.avgProcessTimeMsestiver alto. - Um mecanismo, fila serial; não processe no thread principal.
- Libere os quadros com ARC (
frame = nil). Reutilize buffers de captura. - Evite
setFilter:/setSticker:a cada quadro.
Logs
0 sucesso, -1 argumento inválido, -2 não inicializado. Lista completa: Tratamento de erros.
Versão
- iOS 12.0+, arm64.
- CocoaPods:
pod 'Facebetter', '2.0.0'. - Após o upgrade:
pod install, Clean Build Folder, reteste autenticação eprocessImage:.
Threads
- Mecanismo padrão: fila serial para todos os
processImage:e setters que tocam recursos GL. externalContext = YES: criar + processar no thread GL.- Atualize a UI apenas na fila principal.

