Saltar al contenido principal
Tutoriales

Crear aplicaciones móviles con React y Capacitor

Aprenda a crear una aplicación móvil utilizando React, Capacitor, y mejore la interfaz de usuario nativa con Konsta UI.

Martin Donadieu

Martin Donadieu

Gerente de contenido

Crear aplicaciones móviles con React y Capacitor

In este tutorial, comenzaremos con una nueva aplicación de React y transitaremos a desarrollo móvil nativo utilizando __CAPGO_KEEP_0__. aplicación de React app and transition to native mobile development using Capacitor. Optionally, you can also add aplicación de React aplicación de React

Capacitor allows you to easily convert your React web application into a native mobile app without significant modifications or learning a new skill like React Native.

aplicación de React

This tutorial will guide you through the process, starting with a new React app and then incorporating Capacitor to move into the realm of native mobile apps. Additionally, you can optionally use aplicación de React aplicación de React

About Capacitor

aplicación de React

With Capacitor, obtén una aplicación móvil nativa fantástica sin ningún setup complicado o curva de aprendizaje empinada. Su API delgado y funcionalidad afinada lo convierten en un placer integrarlo en tu proyecto. Confía en mí, te sorprenderá lo sencillo que es lograr una aplicación móvil nativa funcional con Capacitor!

Preparando tu aplicación de React

Mientras que existen varios métodos para iniciar aplicaciones de React, vamos a elegir el más sencillo en este tutorial que proporciona una aplicación de React en blanco:

npx create-react-app my-app

Para crear una aplicación móvil nativa, necesitamos un export de nuestro proyecto. Por lo tanto, incluyamos un script directo en nuestro package.json que podrá utilizarse para construir y exportar el proyecto de React:

{
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  }
}

Puedes ejecutar npm run build sin preocupaciones, y deberías poder ver un directorio recién creado en la raíz de tu proyecto.

Este directorio se utilizará por Capacitor más adelante, pero por ahora debemos configurarlo correctamente.

Agregar Capacitor a tu aplicación de React

Para empaquetar cualquier aplicación web en un contenedor móvil nativo, debemos seguir unos pocos pasos inicialmente, pero posteriormente es tan simple como ejecutar un solo sync comando.

Primero, podemos instalar el Capacitor CLI como dependencia de desarrollo, y luego configurarlo dentro de nuestro proyecto. Durante la configuración, puede pulsar “enter” para aceptar los valores predeterminados para el nombre y el ID de paquete.

A continuación, debemos instalar el paquete principal y los paquetes relevantes para las plataformas iOS y Android.

Finalmente, podemos agregar las plataformas, y Capacitor creará carpetas para cada plataforma en la raíz de nuestro proyecto:

# Install the Capacitor CLI locally
npm install -D @capacitor/cli

# Initialize Capacitor in your React project
npx cap init

# Install the required packages
npm install @capacitor/core @capacitor/ios @capacitor/android

# Add the native platforms
npx cap add ios
npx cap add android

Hasta este punto, deberías poder observar nuevas ios y android carpetas en tu proyecto de React.

Eso son proyectos nativos reales!

Para acceder al proyecto de Android más tarde, debes instalar Android Studio. Para iOS, necesitas un Mac y debes instalar Xcode.

Además, debes encontrar un archivo capacitor.config.ts que contiene algunas configuraciones fundamentales Capacitor utilizadas durante la sincronización. La única cosa a la que debes prestar atención es el webDir, que debe apuntar al resultado de tu comando de compilación. Actualmente, es inexacto.

Para corregir esto, abre el capacitor.config.json file y actualice el webDir:

{
  "appId": "com.example.app",
  "appName": "my-app",
  "webDir": "out",
  "bundledWebRuntime": false
}

Puede probarlo ejecutando los siguientes comandos:

npm run build
npx cap sync

El primer comando npm run build solo construirá su proyecto de React y exportará la construcción estática.

Mientras que el segundo comando npx cap sync sincronizará todos los web code en los lugares adecuados de las plataformas nativas para que puedan ser mostrados en una aplicación.

Además, el comando de sincronización podría actualizar las plataformas nativas e instalar plugins, por lo que cuando instale un nuevo Capacitor plugins es hora de ejecutar npx cap sync de nuevo.

Sin darse cuenta, ya está hecho, así que veamos la aplicación en un dispositivo!

Desarrolla y despliega aplicaciones nativas

Para desarrollar aplicaciones iOS, necesitas tener Xcode instalado, y para aplicaciones Android, necesitas tener Android Studio instalado. Además, si planeas distribuir tu aplicación en la tienda de aplicaciones, necesitas inscribirte en el Programa de Desarrolladores de Apple para iOS y en el Console de Google Play para Android.

Si eres nuevo en el desarrollo de aplicaciones móviles nativas, puedes utilizar el Capacitor CLI para abrir fácilmente ambos proyectos nativos:

npx cap open ios
npx cap open android

Una vez que hayas configurado tus proyectos nativos, desplegar tu aplicación en un dispositivo conectado es fácil. En Android Studio, solo necesitas esperar a que todo esté listo, y puedes desplegar tu aplicación en un dispositivo conectado sin cambiar ninguna configuración. Aquí tienes un ejemplo:

android-studio-run

En Xcode, necesitas configurar tu cuenta de firma para desplegar tu aplicación en un dispositivo real en lugar del simulador. Si no lo has hecho antes, Xcode te guía a través del proceso (pero nuevamente, necesitas estar inscrito en el Programa de Desarrolladores). Una vez hecho esto, solo necesitas pulsar play para ejecutar la aplicación en tu dispositivo conectado, que puedes seleccionar en la parte superior. Aquí tienes un ejemplo:

xcode-run

¡Felicidades! Has desplegado con éxito tu aplicación web de React en un dispositivo móvil. Aquí tienes un ejemplo:

react-mobile-app

Pero espera, hay una forma más rápida de hacer esto durante el desarrollo…

Capacitor Live Reload

Hasta ahora, probablemente estás acostumbrado a tener hot reload con todas las marcos modernas, y la buena noticia es que puedes tener la misma funcionalidad en un dispositivo móvil con un mínimo esfuerzo!

Habilite el acceso a su aplicación localmente alojada con live reload en su red teniendo la aplicación Capacitor cargar el contenido desde la URL específica.

El primer paso es determinar su dirección IP local. Si está utilizando un Mac, puede encontrar esto ejecutando el siguiente comando en la terminal:

ipconfig getifaddr en0

En Windows, ejecuta :

ipconfig

Luego busque la dirección IPv4.

We can instruct Capacitor a cargar la aplicación directamente desde el servidor agregando otra entrada a nuestro capacitor.config.ts archivo:

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  appId: 'com.example.app',
  appName: 'my-app',
  webDir: 'out',
  bundledWebRuntime: false,
  server: {
    url: 'http://192.168.x.xx:3000',
    cleartext: true
  }
};

export default config;

Asegúrese de utilizar el IP y puerto correctos, He utilizado el puerto de React por defecto en este ejemplo.

Ahora, podemos aplicar estos cambios copiándolos a nuestro proyecto nativo:

npx cap copy

La copy comando es similar a sync, pero solo copiará los cambios realizados en la carpeta web y la configuración, sin actualizar el proyecto nativo.

Puede desplegar su aplicación una vez más a través de Android Studio o Xcode. Después de eso, si cambia algo en su aplicación de React, The aplicación se recargará automáticamente y mostrará los cambios!

Tenga en cuenta que si instala nuevos plugins como la cámara, todavía requiere una reconstrucción de su proyecto nativo. Esto se debe a que los archivos nativos se han cambiado, y no se puede hacer en tiempo real.

Nota que debe utilizar la IP y el puerto correctos en su configuración. El bloque code anterior muestra el puerto de demostración de React por defecto.

Usando Capacitor Plugins

Vamos a ver cómo utilizar un plugin Capacitor en acción, que mencionamos antes. Para hacer esto, podemos instalar un plugin bastante simple ejecutando:

npm i @capacitor/share

No hay nada sofisticado en el plugin de Compartir, pero de todos modos muestra el diálogo de compartir nativo. Para esto, ahora solo necesitamos importar el paquete y llamar al share() función desde nuestra aplicación. Vamos a cambiar el src/App.js a esto:

import React from 'react';
import { Share } from '@capacitor/share';

function App() {
  const share = async () => {
    await Share.share({
      title: 'Open Youtube',
      text: 'Check new video on youtube',
      url: 'https://www.youtube.com',
      dialogTitle: 'Share with friends'
    });
  };

  return (
    <div>
      <h1>Welcome to React and Capacitor!</h1>
      <p>
        <h2>Cool channel</h2>
        <button onClick={() => share()}>Share now!</button>
      </p>
    </div>
  );
}

export default App;

Como se mencionó anteriormente, cuando instalamos nuevos plugins, necesitamos realizar una operación de sincronización y luego volver a desplegar la aplicación en nuestro dispositivo. Para hacer esto, ejecute el siguiente comando:

npx cap sync

Después de pulsar el botón, puede ver el diálogo de compartir nativo en acción!

react-capacitor-share

Para hacer que el botón tenga un aspecto más móvil, podemos agregar algunos estilos utilizando mi biblioteca de componentes de interfaz de usuario favorita para aplicaciones web - React (sin intención de broma).

Agregar Konsta UI

He trabajado años con Ionic para construir aplicaciones de plataforma cruzada impresionantes, y fue una de las mejores opciones durante años. Pero ahora ya no la recomiendo; es muy hackeable integrarla con React, y no vale la pena cuando ya tienes tailwindcss.

Si desea una interfaz de usuario móvil que se vea bien y adapte el estilo específico de iOS y Android, recomiendo Konsta UI.

Necesita tener tailwind ya está instalado

Para utilizarlo, solo necesitamos instalar el paquete react package:

npm i konsta

Además, necesitas modificar tu tailwind.config.js archivo:

// import konstaConfig config
const konstaConfig = require('konsta/config')

// wrap config with konstaConfig config
module.exports = konstaConfig({
  content: [
    './src/**/*.{js,ts,javascript,tsx}',
  ],
  darkMode: 'media', // or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
})

konstaConfig extendirá la configuración de Tailwind CSS predeterminada (o la personalizada) con algunas variantes y utilidades adicionales requeridas para Konsta UI.

Ahora necesitamos configurar el componente principal de la aplicación para poder establecer algunos parámetros globales (como Necesitamos envolver toda la aplicación con theme).

en el App Página de Ejemplo src/App.js:

import { App } from 'konsta/react';
import './App.css';

function MyApp({ Component, pageProps }) {
  return (
    // Wrap our app with App component
    <App theme="ios">
      <Component {...pageProps} />
    </App>
  );
}

export default MyApp;

Ahora que todo está configurado, podemos utilizar componentes de Konsta UI React en nuestra aplicación de React.

__CAPGO_KEEP_0__

Por ejemplo, abramos src/App.js y cambiémoslo a lo siguiente:

// Konsta UI components
import {
  Page,
  Navbar,
  Block,
  Button,
  List,
  ListItem,
  Link,
  BlockTitle,
} from 'konsta/react';

function App() {
  return (
    <Page>
      <Navbar title="My App" />

      <Block strong>
        <p>
          Here is your React & Konsta UI app. Let's see what we have here.
        </p>
      </Block>
      <BlockTitle>Navigation</BlockTitle>
      <List>
        <ListItem href="/about/" title="About" />
        <ListItem href="/form/" title="Form" />
      </List>

      <Block strong className="flex space-x-4">
        <Button>Button 1</Button>
        <Button>Button 2</Button>
      </Block>
    </Page>
  );
}

export default App;

Si el recarga en vivo está fuera de sincronía después de instalar todos los componentes necesarios, intenta reiniciar todo. Una vez que hayas hecho eso, deberías ver una aplicación móvil con un aspecto nativo algo similar, construida con React y Capacitor!

Deberías ver la siguiente página como resultado:

konsta-react

Conclusión

Capacitor es una excelente opción para construir aplicaciones nativas basadas en un proyecto web existente, ofreciendo una forma sencilla de compartir code y mantener una interfaz de usuario consistente.

Y con la adición de Capgo, es aún más fácil agregar actualizaciones en vivo a tu aplicación, asegurando que tus usuarios siempre tengan acceso a las últimas características y correcciones de errores.

Si deseas aprender a agregar Capgo a tu aplicación de React, echa un vistazo al siguiente artículo:

Sigue adelante desde Construyendo aplicaciones móviles con React y Capacitor

Si estás utilizando Desarrollo de aplicaciones móviles con React y Capacitor para planificar la automatización de CI/CD, conecta con Capgo CI/CD para el flujo de trabajo del producto en Capgo CI/CD, Capgo Compilaciones nativas para el flujo de trabajo del producto en Capgo Compilaciones nativas, Capgo Integraciones para el flujo de trabajo del producto en Capgo Integraciones, Integración de CI/CD para el detalle de implementación en Integración de CI/CD, y GitHub Integración de acciones para los detalles de implementación en GitHub Acciones de Integración.

Actualizaciones en vivo para aplicaciones Capacitor

Cuando un error en la capa web está activo, envía la corrección a través de Capgo en lugar de esperar días para la aprobación de la tienda de aplicaciones. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen en el camino de revisión normal.

Comienza Ahora

Últimas noticias de nuestro Blog

Capgo te da las mejores pistas que necesitas para crear una aplicación móvil verdaderamente profesional.