자동 업데이트
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-updaternpx 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:
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