Licenciamiento
El VTO SDK distingue dos modos de operación según los parámetros pasados a init().
Modo dev (sin servidor)
Si se llama a init() sin licenseKey ni configEndpoint, el SDK aplica una licencia permisiva local:
{
enabledModules: ['*'], // todos los módulos habilitados
watermark: false // sin marca de agua en capture()
}
No se realiza ninguna petición de red. Todo funciona de inmediato.
Modo prod (con servidor)
Cuando se pasa licenseKey y configEndpoint, el SDK solicita la configuración al endpoint:
GET <configEndpoint>?key=<licenseKey>
El endpoint devuelve un objeto LicenseConfig. Con él el SDK:
- Gatea módulos: si alguno de los
modulespedidos eninit()no aparece enenabledModules(yenabledModulesno es['*']),init()lanza un error antes de inicializar nada. - Watermark en captura: si
LicenseConfig.watermarkestrue,capture()estampa automáticamente una marca de agua en la imagen resultante. - Branding de licencia: el campo
brandingpermite que el servidor fuerce el nombre (name) y logo (logoUrl) mostrados por el SDK. - Paleta forzada: el campo
colorspermite que el servidor entregue una paleta cerrada de tonos.
Ejemplo de configuración prod:
await OBVto.init({
licenseKey: 'pk_live_abc123',
configEndpoint: 'https://api.miempresa.com/vto/license',
modules: ['hair-color'],
// …
})
Provider enchufable
Mientras el endpoint servidor (validación key+dominio, implementado en Go/OmniBuy) está pendiente, se puede inyectar un licenseProvider directamente en init(). El provider tiene prioridad sobre configEndpoint:
await OBVto.init({
licenseKey: 'dev-key',
licenseProvider: async (key) => ({
enabledModules: ['hair-color'],
watermark: false,
}),
modules: ['hair-color'],
})
El tipo del provider es:
type LicenseProvider = (licenseKey: string | undefined) => Promise<LicenseConfig>