Saltar al contenido principal

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:

  1. Gatea módulos: si alguno de los modules pedidos en init() no aparece en enabledModules (y enabledModules no es ['*']), init() lanza un error antes de inicializar nada.
  2. Watermark en captura: si LicenseConfig.watermark es true, capture() estampa automáticamente una marca de agua en la imagen resultante.
  3. Branding de licencia: el campo branding permite que el servidor fuerce el nombre (name) y logo (logoUrl) mostrados por el SDK.
  4. Paleta forzada: el campo colors permite 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>

Referencia de LicenseConfig

Ver Referencia de tipos → LicenseConfig.