FAQ (Tanya Jawab)
Si tienes preguntas que no se hayan respondido aquí, ¡por favor pregunta! Puedes abrir un issue o preguntar en Discord
¿Qué es “code push”?
Code push, también conocido como “actualizaciones en el aire” (OTA) es un servicio en la nube que permite a los desarrolladores de Capacitor desplegar actualizaciones a sus aplicaciones en producción. Capgo actualmente funciona en Android y iOS y eventualmente funcionará en todas las plataformas donde funcione Capacitor.
“Code Push” hace referencia al nombre de una función de despliegue utilizada por la comunidad de React Native de Microsoft y Expo, ninguna de las cuales soporta Capacitor.
¿Cuál es la diferencia entre un bundle y un release?
Usamos el término “release” para referirnos a la preparación de un binario para las tiendas de aplicaciones. Para poder generar un bundle posteriormente, Capgo necesita conocer el binario exacto que se envió a las tiendas.
Usamos el término “bundle” para referirnos a un parche que puede aplicarse a un release para actualizarlo con nuevo código. El comando npx @capgo/cli app update
se usa para generar un bundle desde tu código local nuevo que luego se envía a tus usuarios.
¿Cuál es la hoja de ruta?
Nuestros tableros de proyecto son públicos y se encuentran en: https://github.com/orgs/Cap-go/projects
Nuestro equipo también opera públicamente, así que puedes ver en qué estamos trabajando en cualquier momento. Estaremos encantados de responder cualquier pregunta que tengas sobre nuestra hoja de ruta o prioridades a través de issues de Github o Discord.
¿Puedo usar Capgo con mi equipo?
¡Sí! Todos los planes soportan desarrolladores ilimitados. Solo limitamos las métricas de la aplicación (MAU, almacenamiento y ancho de banda) para cada organización.
Consulta Teams para más información.
¿Capgo almacena mi código fuente?
No. Los servidores de Capgo nunca ven tu código fuente. Cuando ejecutas npx @capgo/cli app update
, la herramienta npx @capgo/cli
solo sube el mismo código compilado que envías a las tiendas de aplicaciones. Si deseas seguridad adicional, puedes usar cifrado de Extremo a Extremo para cifrar tu bundle antes de subirlo a los servidores de Capgo.
Consulta también nuestra política de privacidad: https://capgo.app/privacy
¿Puedo usar Capgo desde mi sistema CI?
Sí. Capgo está diseñado para ser usado desde sistemas CI. Hemos publicado una guía para Android y Github Actions y IOS, y para Gitlab, otros sistemas CI deberían ser similares.
No dudes en contactarnos a través de issues de GitHub o Discord si encuentras algún problema.
¿Cómo se relaciona esto con Firebase Remote Config o Launch Darkly?
Code push permite agregar nuevo código / reemplazar código en el dispositivo. Firebase Remote Config y Launch Darkly son sistemas de configuración. Te permiten cambiar la configuración de tu aplicación sin tener que enviar una nueva versión. No están diseñados para reemplazar código.
¿Qué tamaño de huella de dependencias agrega esto?
No lo he medido recientemente, pero espero que la biblioteca de code push agregue menos de un megabyte a las aplicaciones Capacitor. Conocemos formas de hacerlo más pequeño cuando eso se convierta en una prioridad. Si el tamaño es un bloqueador para ti, ¡háganoslo saber!
¿Funciona code push con aplicaciones grandes?
Sí. No hay límite en el tamaño de la aplicación que puede actualizarse con code push. Como se menciona abajo, Capgo puede cambiar cualquier código JS en tu aplicación sin importar el tamaño.
Nota: Un tamaño mayor hace más difícil que los usuarios descarguen actualizaciones. Recomendamos mantener tu aplicación lo más pequeña posible.
¿Para qué puedo usar Capgo code push?
Hemos visto varios usos, incluyendo:
- Correcciones de emergencia para aplicaciones en producción
- Envío de correcciones de errores a usuarios en versiones antiguas de tu aplicación
- Envío constante (por ejemplo, cada hora)
Ten en cuenta que la mayoría de las tiendas de aplicaciones prohíben enviar código que cambie el comportamiento de la aplicación de manera significativa. Consulta abajo para más información.
¿Qué cuenta como un “MAU” para Capgo?
Un MAU es un “Usuario Activo Mensual”. Contamos un MAU como cualquier dispositivo que haya contactado con nuestros servidores en los últimos 30 días. No contamos dispositivos que no hayan contactado con nuestros servidores en los últimos 30 días.
Cada vez que un dispositivo instala tu aplicación nuevamente, se cuenta un nuevo MAU, esto sucede debido a las limitaciones de privacidad de la App Store. No podemos rastrear el mismo dispositivo si el usuario reinstala la aplicación.
Durante el desarrollo, cada vez que reinstales la aplicación, se cuenta un nuevo MAU.
Lo mismo para las descargas de testflight o cambio de canal en Android. Actualizar la aplicación no crea un nuevo ID de Dispositivo.
Recomendamos después de la primera configuración, deshabilitar los dispositivos de desarrollo y emuladores para reducir la cantidad de dispositivos duplicados.
¿Para qué no podemos usar Capgo code push?
Como se mencionó arriba, Capgo no debe usarse para violar las políticas de las tiendas de aplicaciones. Consulta abajo para más información.
Además, Capgo no soporta cambiar código nativo (por ejemplo, Java/Kotlin en Android u Objective-C/Swift en iOS). La herramienta te advertirá durante un intento de actualización si has cambiado código nativo.
¿Capgo envía a las tiendas por mí?
Actualmente Capgo no soporta el envío a las tiendas de aplicaciones en tu nombre. Tenemos planes de agregar esto en el futuro, pero por ahora necesitarás continuar usando tus procesos existentes para enviar a las tiendas de aplicaciones.
Puedes usar nuestra guía CI para Android para automatizar este proceso y guía CI para iOS
¿Qué almacena Capgo en el disco y dónde?
El actualizador de Capgo (incluido en tu aplicación cuando la compilas) almacena en caché el último bundle descargado en el único directorio que Capacitor permite cargar código. En Android, esto se encuentra en /data/user/0/comexampleapp/code_cache/capgo_updater
aunque la base de esa ruta es proporcionada por el sistema Android y puede cambiar dinámicamente en tiempo de ejecución. En dispositivos iOS, los datos se almacenan en Library/Application Support/capgo
.
Las herramientas de línea de comandos de Capgo (por ejemplonpx @capgo/cli app update
) se instalan en el disco en las cachés de npm, tus inicios de sesión se almacenan en el directorio home en ~/capgo
¿Cómo se relaciona esto con Capacitor Hot Reload?
El Hot reload de Capacitor es una función solo para desarrollo. Code push es para producción.
Hot reload es una función de Capacitor que permite cambiar código en el dispositivo durante el desarrollo. Requiere construir la aplicación Capacitor con un proxy para conectarse a tu máquina local.
Code push es una función que permite cambiar código en el dispositivo en producción. Usaremos diferentes técnicas para hacer esto posible dependiendo de la plataforma.
¿Qué tipos de cambios soporta el code push de Capgo?
Capgo puede cambiar cualquier código JS en tu aplicación. Esto incluye código de la aplicación y código generado. También puedes actualizar dependencias en package.json
siempre que no requieran cambios de código nativo.
No tenemos planes de soportar cambios de código nativo (por ejemplo Java/Kotlin en Android u Objective-C/Swift en iOS), y la herramienta te advertirá si detecta que has cambiado código nativo ya que no se incluirá en el paquete.
¿Soporta Web?
Code push no es necesario para web ya que la web ya funciona de esta manera. Cuando un usuario abre una aplicación web, descarga la última versión del servidor si es necesario.
Si tienes un caso de uso para code push con web, ¡nos encantaría saberlo!
¿Funcionará en iOS, Android, Mac, Windows, Linux, etc?
Sí.
Hasta ahora nos hemos centrado en el soporte de Android e iOS, pero code push eventualmente funcionará en todas partes donde funcione Capacitor. Primero nos estamos asegurando de construir toda la infraestructura necesaria para proporcionar code push de manera confiable y segura antes de expandirnos a más plataformas.
¿Qué versiones de SO soporta Capgo?
Capgo soporta las mismas versiones de Android que Capacitor.
Capacitor actualmente soporta Android API nivel 22+ y iOS 13.0+: https://capacitorjs.com/docs/main/reference/support-policy
¿Qué versiones de Capacitor soporta Capgo?
Capgo actualmente solo soporta versiones estables recientes de Capacitor. Podríamos soportar versiones más antiguas de Capacitor también, simplemente no hemos construido la infraestructura necesaria para mantenerlo a lo largo del tiempo. Tenemos la intención de soportar más versiones de Capacitor en el futuro, incluyendo cualquier versión para nuestros clientes empresariales https://github.com/Cap-go/capgo/issues/1100
Capgo sigue las versiones estables y generalmente se actualiza dentro de las pocas horas de cualquier lanzamiento estable. Nuestro sistema para hacer estas actualizaciones está automatizado y toma unos minutos para ejecutarse. Luego hacemos un paso de verificación manual adicional antes de publicar en nuestros servidores.
¿Cómo se relaciona esto con el proceso de revisión o políticas de App/Play Store?
Los desarrolladores están sujetos a sus acuerdos con los proveedores de las tiendas cuando eligen usar esas tiendas. Code push está diseñado para permitir a los desarrolladores actualizar sus aplicaciones y aún cumplir con las políticas de las tiendas en iOS y Android. Similar a la variedad de productos comerciales disponibles para hacerlo con React Native (por ejemplo Microsoft, Expo)
Microsoft también publica una guía sobre cómo su solución cumple con las tiendas de aplicaciones: https://github.com/microsoft/react-native-code-push#store-guideline-compliance
Code push es una técnica ampliamente utilizada en las tiendas de aplicaciones. Todas las aplicaciones grandes que conozco usan code push. La política principal a tener en cuenta es no cambiar el comportamiento de la aplicación de manera significativa. Por favor, consulta más abajo para más información.
¿Cumple Capgo con las directrices de Play Store?
Sí.
La Play Store ofrece dos restricciones relacionadas con las herramientas de actualización:
- Las actualizaciones deben usar un intérprete o máquina virtual (Capgo usa la Máquina Virtual de Dart) https://support.google.com/googleplay/android-developer/answer/9888379?hl=en
<span><span> Una aplicación distribuida a través de Google Play no puede modificarse, reemplazarse o actualizarse</span><br></span><span><span> usando cualquier método que no sea el mecanismo de actualización de Google Play. Del mismo modo, una aplicación</span><br></span><span><span> no puede descargar código ejecutable (como archivos dex, JAR, .so) de una</span><br></span><span><span> fuente que no sea Google Play. *Esta restricción no se aplica al código</span><br></span><span><span> que se ejecuta en una máquina virtual o un intérprete* donde cualquiera proporcione</span><br></span><span><span> acceso indirecto a las APIs de Android (como JavaScript en una webview o</span><br></span><span><span> navegador)</span><br></span><span><span></span><br></span><span><span> Las aplicaciones o código de terceros, como SDKs, con lenguajes interpretados (JavaScript,</span><br></span><span><span> Python, Lua, etc.) cargados en tiempo de ejecución (por ejemplo, no empaquetados con la</span><br></span><span><span> aplicación) no deben permitir posibles violaciones de las políticas de Google Play</span><br></span>
- Los cambios en la aplicación no deben ser engañosos (por ejemplo, cambiar el propósito de la aplicación mediante actualización) https://support.google.com/googleplay/android-developer/answer/9888077 Por favor, sé claro con tus usuarios sobre lo que estás proporcionando con tu aplicación y no violes sus expectativas con cambios significativos de comportamiento a través del uso de Capgo.
Capgo está diseñado para ser compatible con las directrices de Play Store. Sin embargo, Capgo es una herramienta y, como cualquier herramienta, puede ser mal utilizada. El abuso deliberado de Capgo para violar las directrices de Play Store está en violación de los Términos de Servicio de Capgo y puede resultar en la terminación de tu cuenta.
Finalmente, los servicios de code push son ampliamente utilizados en la industria (todas las aplicaciones grandes que conozco los usan) y hay múltiples otros servicios de code push disponibles públicamente (por ejemplo expo.dev & appcenter.ms). Este es un camino bien recorrido.
Microsoft también publica una guía sobre cómo su biblioteca “codepush” de react native cumple con las tiendas de aplicaciones: https://github.com/microsoft/react-native-code-push#store-guideline-compliance
¿Cumple Capgo con las directrices de App Store?
Sí.
Similar a la Play Store, la App Store ofrece tanto restricciones técnicas como políticas.
<span><span>3.2.2</span><br></span><span><span>el código interpretado puede descargarse en una Aplicación, pero solo mientras que</span><br></span><span><span>dicho código:</span><br></span><span><span>(a) no cambie el propósito principal de la Aplicación proporcionando</span><br></span><span><span>características o funcionalidades que sean inconsistentes con el propósito</span><br></span><span><span>previsto y anunciado de la Aplicación enviada a la App Store,</span><br></span><span><span>(b) no cree una tienda o punto de venta para otro código o aplicaciones, y</span><br></span><span><span>(c) no eluda la firma, el sandbox u otras características de seguridad del SO</span><br></span>
Capgo utiliza un intérprete personalizado de Dart para cumplir con la restricción de solo intérprete para actualizaciones en iOS. Mientras tu aplicación no participe en comportamientos engañosos a través de actualizaciones (por ejemplo, cambiar el propósito de la aplicación mediante actualización), actualizar a través de Capgo (o cualquier otra solución de código push) es una práctica estándar de la industria y cumple con las pautas de la App Store.
El abuso deliberado de Capgo para violar las pautas de la App Store está en violación de los [Términos de Servicio](https://capgo.app/tos/) de Capgo y puede resultar en la terminación de tu cuenta.
Microsoft también publica una guía sobre cómo su biblioteca "codepush" de react native cumple con las tiendas de aplicaciones: [https://github.com/microsoft/react-native-code-push#store-guideline-compliance](https://github.com/microsoft/react-native-code-push/#store-guideline-compliance)
### ¿Puedo usar Capgo en mi país?[](https://capgo.app/docs/faq/#can-i-use-capgo-in-my-country "Direct link to Can I use Capgo in my country?")
No hemos intentado restringir el acceso a Capgo desde ningún país.
Reconocemos que algunos países tienen restricciones sobre qué URLs se pueden acceder desde dentro del país. Capgo actualmente utiliza Cloudflare Cloud para el alojamiento, incluyendo R2 Storage y Cloudflare workers.
Las siguientes URLs son utilizadas por Capgo:
- [https://apicapgoapp](https://apicapgoapp/) -- utilizado por las herramientas de línea de comandos `npx @capgo/cli` para interactuar con los servidores de Capgo, así como el actualizador de Capgo en los dispositivos de los usuarios para buscar actualizaciones- [https://*r2cloudflarestoragecom](https://*r2cloudflarestoragecom/) -- utilizado por la herramienta de línea de comandos `npx @capgo/cli` para subir y descargar paquetes
Si todas esas URLs son accesibles desde tu país, entonces Capgo debería funcionar.
Si tu región requiere bloquear el acceso a cualquiera de esas URLs, por favor háganoslo saber y podemos trabajar contigo para encontrar una solución. Los servidores proxy son una opción.
### ¿Puedo auto-alojar Capgo?[](https://capgo.app/docs/faq/#can-i-self-host-capgo "Direct link to Can I self-host Capgo?")
Sí, puedes auto-alojar Capgo. La guía aún no está escrita, pero el código es de código abierto y está disponible en [https://github.com/cap-go/capgo](https://github.com/cap-go/capgo/)
### ¿El code push requiere internet para funcionar?[](https://capgo.app/docs/faq/#does-code-push-require-the-internet-to-work "Direct link to Does code push require the internet to work?")
Sí. Se podría imaginar ejecutar un servidor para distribuir las actualizaciones separado de internet general, pero se requiere alguna forma de conectividad de red para transportar actualizaciones a los dispositivos.
### ¿Cómo afecta la falta de conectividad de red a Capgo?[](https://capgo.app/docs/faq/#how-is-capgo-affected-by-lack-of-network-connectivity "Direct link to How is Capgo affected by lack of network connectivity?")
El actualizador de Capgo (incluido en tu aplicación cuando construyes tu app con Capgo) está diseñado para ser resiliente a problemas de conectividad de red.
En el comportamiento de actualización predeterminado, cuando la aplicación se inicia, alerta al actualizador de Capgo, que genera un hilo separado para hacer una solicitud de red a los servidores de Capgo y solicitar una actualización. Intencionalmente usamos un hilo separado para evitar afectar o bloquear cualquier otra cosa que la aplicación pudiera estar haciendo. Si la solicitud de red falla o se agota el tiempo de espera, el actualizador simplemente intentará verificar nuevamente la próxima vez que se inicie la aplicación.
Las herramientas de línea de comandos de Capgo (por ejemplo, `npx @capgo/cli app update`) requieren conectividad de red para funcionar. Si estás usando Capgo para distribuir tu aplicación, debes asegurarte de que tu sistema CI tenga conectividad de red.
### ¿Qué sucede si un usuario no actualiza durante mucho tiempo y se pierde una actualización?[](https://capgo.app/docs/faq/#what-happens-if-a-user-doesnt-update-for-a-long-time-and-misses-an-update "Direct link to What happens if a user doesn't update for a long time and misses an update?")
Nuestra implementación siempre envía una actualización específicamente adaptada para el dispositivo que la solicita, actualizando siempre al solicitante a la última versión disponible. Por lo tanto, si un usuario no actualiza durante un tiempo, se "perderá" las actualizaciones intermedias.
El servidor de actualización podría modificarse para admitir responder con la siguiente versión incremental o la última versión, dependiendo de las necesidades de tu aplicación. Por favor, háznos saber si los comportamientos de actualización alternativos son importantes para ti.
### ¿Cómo se relaciona Capgo con Capacitor?[](https://capgo.app/docs/faq/#how-does-capgo-relate-to-capacitor "Direct link to How does Capgo relate to Capacitor?")
Capgo es un plugin para Capacitor que agrega code push. Capgo no es un reemplazo para Capacitor. Puedes continuar usando las herramientas de Capacitor que ya conoces y te gustan.
Seguimos la última versión estable de Capacitor y actualizamos nuestro plugin de code push para que funcione con ella.
### ¿Cuándo ocurren las actualizaciones?[](https://capgo.app/docs/faq/#when-do-updates-happen "Direct link to When do updates happen?")
Por defecto, el actualizador de Capgo busca actualizaciones al iniciar la aplicación. Se ejecuta en un hilo en segundo plano y no bloquea el hilo de la UI. Cualquier actualización se instalará mientras el usuario está usando la aplicación y se aplicará la próxima vez que se reinicie la aplicación.
También es posible ejecutar el actualizador de Capgo manualmente usando [package:capgo\_code\_push](https://pubdev/packages/capgo_code_push/), a través del cual es posible activar actualizaciones en cualquier momento, incluso mediante una notificación push.
El actualizador de Capgo está diseñado de tal manera que cuando la red no está disponible, o el servidor está caído o no es accesible, la aplicación continuará funcionando normalmente. Si alguna vez decides eliminar una actualización de nuestros servidores, todos tus clientes continuarán funcionando normalmente.
Hemos agregado la capacidad de revertir parches. Lo más simple es simplemente adjuntar un paquete anterior a tu canal para deshacer.
### ¿Necesito mantener mi app\_id en secreto?[](https://capgo.app/docs/faq/#do-i-need-to-keep-my-app_id-secret "Direct link to Do I need to keep my app_id secret?")
No. El `app_id` está incluido en tu aplicación y es seguro que sea público. Puedes registrarlo en el control de versiones (incluso públicamente) y no preocuparte de que alguien más lo acceda.
Alguien que tenga tu `app_id` puede obtener la última versión de tu aplicación de los servidores de Capgo, pero no puede enviar actualizaciones a tu aplicación ni acceder a ningún otro aspecto de tu cuenta de Capgo.
### ¿Qué información se envía a los servidores de Capgo?[](https://capgo.app/docs/faq/#what-information-is-sent-to-capgo-servers "Direct link to What information is sent to Capgo servers?")
Aunque Capgo se conecta a la red, no envía ninguna información personalmente identificable. Incluir Capgo no debería afectar tus declaraciones para la Play Store o App Store.
Las solicitudes enviadas desde la aplicación a los servidores de Capgo incluyen:
- app\_id (especificado en `capacitorconfigjson`)- channel (opcional en `capacitorconfigjson`)- release\_version (versionName de AndroidManifestxml o CFBundleShortVersionString de Infoplist o `capacitorconfigjson` si está configurado en [`CapacitorUpdaterversion`](/docs/plugin/settings/#version))- version\_number (generado como parte de `npx @capgo/cli app update`)- os_version (por ejemplo '1121')- platform (por ejemplo 'android', necesario para enviar el parche correcto) Eso es todo. El código para esto está en `updater/library/src/networkrs`- device\_id (generado en el dispositivo en la primera ejecución, utilizado para eliminar duplicados de instalaciones por dispositivo y permitirnos cobrar según los usuarios instalados)usuarios activos mensuales), en lugar de parches totales o instalaciones totales de parches)- custom_id (opcional, establecido en tiempo de ejecución por el desarrollador, usado para vincular un dispositivo a un usuario en tu sistema)
### ¿Qué plataformas soporta Capgo?
Actualmente, Capgo soporta iOS y Android. Ambos están listos para producción.
El uso de Capgo para iOS o Android puede ser decisiones independientes. Puedes configurar en tu canal para distribuir a Android y una ipa construida para la App Store o viceversa.
Capgo puede (relativamente fácil) ser adaptado para soportar escritorio o dispositivos embebidos. Si estos son importantes para ti, háganoslo saber.
### ¿Cómo interactúa Capgo con Play Testing Tracks o Apple TestFlight?
Cada una de las tiendas de aplicaciones tiene mecanismos separados para distribuir aplicaciones a grupos limitados de usuarios (por ejemplo, "pruebas internas", "beta cerrada", etc.). Todos estos son mecanismos para segmentar a tus usuarios en grupos y distribuir versiones específicas de tus aplicaciones a cada uno.
Desafortunadamente, no todos estos mecanismos permiten a terceros detectar cuándo las aplicaciones están instaladas en alguna Test Track específica o vía TestFlight. Por lo tanto, no tenemos visibilidad confiable sobre la composición de estos grupos, y no podemos controlar de manera confiable el acceso a los parches de Capgo basados en estos grupos [https://stackoverflow.com/questions/53291007/can-an-android-application-identify-the-test-track-within-google-play](https://stackoverflow.com/questions/53291007/can-an-android-application-identify-the-test-track-within-google-play/) [https://stackoverflow.com/questions/26081543/how-to-tell-at-runtime-whether-an-ios-app-is-running-through-a-testflight-beta-i](https://stackoverflow.com/questions/26081543/how-to-tell-at-runtime-whether-an-ios-app-is-running-through-a-testflight-beta-i/)
Si deseas segmentar la disponibilidad del paquete Capgo, hay 4 opciones potenciales:
1. Usar canales separados para cada grupo. Este es el enfoque más directo, pero requiere que administres múltiples canales. Es posible que ya tengas canales de desarrollo y producción con diferente disponibilidad. Así puedes actualizar tus canales de desarrollo, verificarlos y luego actualizar separadamente tus canales de producción. Recomendamos usar ramas / etiquetas en tu control de versiones para ayudar a mantener un registro de las fuentes asociadas con cada versión.2. Rastrear tu propio conjunto de usuarios inscritos, deshabilitar actualizaciones automáticas y activar actualizaciones solo para ciertos usuarios a través de package:capgo_code_push. Esto funciona hoy, pero requiere que administres tu propia lista de inscripción.3. Capgo permite crear su propio mecanismo de inscripción por dispositivo (similar a Test Tracks o TestFlight, solo que agnóstico a la plataforma). Esto permite que tu equipo de QA opte por recibir paquetes antes de que sean promovidos al público general.4. Capgo tiene despliegues basados en porcentajes. Esto no te permite elegir a qué dispositivos enviar, pero puede ayudarte a desplegar incrementalmente y revertir ante cualquier problema.
## Facturación
### ¿Cómo actualizo o bajo de categoría mi plan?
Puedes actualizar o bajar de categoría tu plan en cualquier momento en tu panel de control: [https://webcapgoapp/dashboard/settings/plans](https://webcapgoapp/dashboard/settings/plans/)
### ¿Cuándo se reinicia mi período de facturación?
Los períodos de facturación se reinician automáticamente cada mes en el mes que te suscribiste por primera vez a Capgo. Por ejemplo, si te suscribiste el día 15 del mes, tu período de facturación se reiniciará el 15 de cada mes.
### ¿Cómo cancelo mi suscripción?
Puedes cancelar tu suscripción en cualquier momento en tu panel de control: [https://webcapgoapp/dashboard/settings/plans](https://webcapgoapp/dashboard/settings/plans/)
### ¿Puedo pagar por un año por adelantado?
Sí, puedes hacerlo en cualquier momento en tu panel de control: [https://webcapgoapp/dashboard/settings/plans](https://webcapgoapp/dashboard/settings/plans/)
### Estadísticas y análisis
Las estadísticas en tu panel de control se actualizan cada medianoche UTC.Las estadísticas se calculan basándose en el número de [MAU](https://capgo.app/docs/faq/#what-is-the-difference-between-a-bundle-and-a-release) que se han instalado en tus dispositivos.
# Cómo se genera el ID del dispositivo
El ID del dispositivo se genera en el dispositivo en la primera ejecución, y se usa para eliminar duplicados de instalaciones por dispositivo y permitirnos cobrar basándonos en usuarios instalados (por ejemplo, usuarios activos mensuales), en lugar de parches totales o instalaciones totales de parches.
MAU es una mejor solución que el número de instalaciones para fijar el precio de Capgo, ya que es más preciso y refleja el costo real de Capgo por dispositivo.
Por razones de privacidad, no podemos rastrear el mismo dispositivo si el usuario reinstala la aplicación.
Las reglas de privacidad son impuestas por Apple y Google, y no por Capgo.
El ID del dispositivo no aparecerá en tu lista de dispositivos hasta que reciban su primer parche instalado.
# ¿Por qué mi número de dispositivos es diferente a mi MAU?
Actualmente, la lista de dispositivos no se actualiza tan frecuentemente como el MAU.
La lista de dispositivos se actualiza solo cuando un dispositivo instala una actualización.
Mientras que el MAU se actualiza en cada inicio de la aplicación. Esta es una limitación actual de la plataforma. Nuestra plataforma de Analytics no soporta actualizaciones en bruto por lo que usamos una base de datos convencional para la lista de Dispositivos.
Para limitar el número de consultas a la base de datos, solo actualizamos las filas en la actualización de la aplicación.
Esta limitación será eliminada en el futuro.
# ¿Cómo tener diferentes actualizaciones por plataforma?
Puedes crear un canal para cada plataforma y deshabilitar las actualizaciones específicas de plataforma en cada canal.
En el canal ios deshabilita las actualizaciones de android y en el canal android deshabilita las actualizaciones de ios.
Luego sube un paquete a cada canal para tener diferentes actualizaciones para cada plataforma.
Si necesitas tener la misma actualización para ambas plataformas, puedes vincular un paquete a múltiples canales. No es necesario duplicar el paquete.