Saltar al contenido

자동 업데이트

Esta documentación explicará cómo ejecutar tu servidor de actualización automática

Antes de empezar

Si usas este trabajo por tu cuenta, no podría sugerir más que apoyes mi trabajo a través de esto

Hice una gran apuesta al hacer de código abierto todo el valioso código que construí aquí

Podría haberlo guardado para mí y ponerle un precio alto

Además, quiero centrarme en las herramientas de Capgo y hacer que sea un negocio abierto y transparente

Del mismo modo, creo que haría nuestro mundo un mejor lugar al abrir en lugar de luchar y ocultar

Pero para hacerlo posible, todos debemos hacer nuestra parte, incluido tú 🥹

Si las ofertas de Capgo no te convienen, entonces pon tu precio y respalda a un Maker bootstrapped AQUÍ en tus términos

Instalación rápida

npm install @capgo/capacitor-updater
npx cap sync

Configuración

Tienes que configurar el plugin para usar tu URL así:

{
"plugins": {
"CapacitorUpdater": {
"updateUrl": "https://TUURL",
}
}
}

🚧 En Android no está permitido hacer peticiones HTTP, para propósitos de prueba permítelo

API de Actualización

El plugin hará una llamada POST a tu API cada vez que la aplicación se abra, con este cuerpo:

interface AppInfos {
"platform": "ios" | "android",
"device_id": "UUID_del_dispositivo_único_por_instalación",
"app_id": "APPID_DE_CONFIGURACION_CAPACITOR",
"custom_id": "tu_id_personalizado_establecido_en_tiempo_de_ejecución",
"plugin_version": "VERSION_DEL_PLUGIN",
"version_build": "NUMERO_VERSION_DEL_CODIGO_NATIVO",
"version_code": "CODIGO_VERSION_DEL_CODIGO_NATIVO",
"version_name": "ULTIMA_VERSION_DESCARGADA" | "builtin"
"version_os": "VERSION_DEL_SISTEMA_OPERATIVO",
"is_emulator": boolean,
"is_prod": boolean,
}

El servidor API debería responder, en JSON, al plugin capacitor-updater con estos datos si una actualización es necesaria:

{
"version": "123",
"url": "https://ruta_al_archivo_zip_del_codigo.com"
}

En Auto-update el servidor debería hacer el trabajo de comparar la versión y devolver la correcta, si la clave URL está presente, el plugin inicia el proceso de descarga

Si agregas las claves “message” y “error”, la versión no se establecerá, y el mensaje se mostrará en los registros en su lugar

La clave version debe estar en formato semver

El zip debe tener index.html como archivo en la raíz, o solo una carpeta en la raíz con index.html dentro

Puedes usar el comando de la CLI para comprimir tu bundle:

Ventana de terminal
npx @capgo/cli bundle zip --path [/ruta/a/mi/bundle]

Cifrado de extremo a extremo

A partir de la versión 4.15.0 el plugin permite enviar actualizaciones cifradas

Puedes usar esta característica creando una clave privada npx @capgo/cli key create

Luego cifras tu archivo zip con npx @capgo/cli encrypt [ruta/al/zip]

El comando te mostrará un ivSessionKey que debe ser enviado con tu payload de actualización en la clave session_key
Entonces tu app podrá usar la clave privada para descifrar el session_key y usar el session_key descifrado para descifrar la actualización

Aprende más sobre esto aquí:

API de Estadísticas

¡A partir de la versión 1.3.0 el sistema de actualización envía estadísticas!

Por defecto, todas las estadísticas se envían a nuestro servidor, para entender el uso

💡 No se envían datos privados para las estadísticas, solo UUID aleatorio, versión de actualización, versión de app nativa, plataforma, acción y ID de app

Si quieres enviar datos a tu servidor en su lugar, cambia la configuración a continuación:

// capacitor.config.json
{
"appId": "*******",
"appName": "Name",
"plugins": {
"CapacitorUpdater": {
"statsUrl": "TU_URL"
}
}
}

Lo que tu servidor recibirá es:

interface AppInfosStats {
"action": "set", // puede ser set, delete, set_fail, reset, revert
// Luego es la misma información que la actualización
"app_id": "*******", // identificador de app en la tienda
"device_id": "*******", // id único por instalación de app
"platform": "ios", // o android
"custom_id": "usuario_1", // representa tu usuario
"version_name": "123", // versión de la compilación web
"version_build": "120", // versión de la compilación nativa
"version_code": "120", // número de compilación de la compilación nativa
"version_os": "16", // versión del SO del dispositivo
"plugin_version": "4.0.0"// para hacer que tu api se comporte diferente con diferentes plugins
"is_emulator": false,
"is_prod": false,
}

También puedes deshabilitarlo completamente, con una cadena vacía. Ten en cuenta que las estadísticas están hechas amigables con la privacidad y me ayudan a entender cómo la gente usa el plugin, para resolver problemas y mejorarlo

API de Canal

Por documentar