Los enlaces universales en iOS y App Links en Android permiten que los usuarios sean dirigidos directamente a tu aplicación desde un enlace, sin pasar por el navegador. Esto es particularmente útil para mejorar la experiencia del usuario y mantener el contexto desde una página web a una aplicación. En esta guía, veremos el proceso de configuración de estos enlaces profundos para una aplicación Next.js usando Capacitor.
Configurar enlaces profundos no requiere mucho código, pero implica algo de configuración. Al final de esta guía, podrás hacer clic en un enlace como https://www.capgo.app/details/22
y hacer que tu aplicación se abra en la página correcta si está instalada.
Configuración de Enlaces Profundos en Next.js
Primero, crearemos una nueva aplicación Next.js y una página de detalles para pruebas:
npx create-next-app@latest capgoLinkscd capgoLinksmkdir pages/detailstouch pages/details/[id].jsnpm run buildnpx cap add iosnpx cap add android
Asegúrate de que tu ID del paquete esté correctamente configurado en el archivo capacitor.config.json, ya que es crucial para la configuración:
{ "appId": "com.capgo.deeplinks", "appName": "capgoLinks", "webDir": "out", "bundledWebRuntime": false}
Para el enrutamiento, Next.js utiliza enrutamiento basado en archivos, así que al crear un archivo en pages/details/[id].js
, ya hemos configurado nuestra ruta comodín.
En pages/details/[id].js
, podemos recuperar el ID de la URL usando el enrutador integrado de Next.js:
import { useRouter } from 'next/router'
function DetailsPage() { const router = useRouter() const { id } = router.query
return ( <div> <p>My ID: {id}</p> </div> )}
export default DetailsPage
Ahora, vamos a manejar el evento appUrlOpen
con Capacitor. Este evento se activa cuando la aplicación se abre a través de un esquema de URL personalizado. Agrega un listener en el archivo pages/_app.js
:
import { useEffect } from 'react'import { App } from '@capacitor/app'
function MyApp({ Component, pageProps }) { useEffect(() => { App.addListener('appUrlOpen', (event) => { const slug = event.url.split('.app').pop() if (slug) window.location.href = slug
}) }, [])
return <Component {...pageProps} />}
export default MyApp
Este código escucha el evento appUrlOpen
y navega a la ruta apropiada dentro de tu aplicación Next.js.
Configuración de iOS
Para iOS, necesitarás un ID de aplicación con Associated Domains habilitado. Crea un archivo apple-app-site-association con el siguiente contenido, reemplazando YOURTEAMID
y com.your.bundleid
con tu ID de equipo y ID de paquete reales:
{ "applinks": { "apps": [], "details": [ { "appID": "YOURTEAMID.com.your.bundleid", "paths": ["*"] } ] }}
Sube este archivo al directorio .well-known
en tu dominio, haciéndolo accesible en https://www.capgo.app/.well-known/apple-app-site-association
.
En Xcode, agrega el dominio a los derechos de tu aplicación usando el formato applinks:capgo.app
.
Configuración de Android
Para los App Links de Android, sigue estos pasos:
- Genera un archivo keystore si no tienes uno.
- Obtén la huella digital SHA256 del keystore.
- Crea un archivo assetlinks.json con tu nombre de paquete y huella digital SHA256.
- Sube este archivo al directorio
.well-known
en tu dominio.
En tu AndroidManifest.xml
, agrega un intent-filter
al elemento activity
que maneja los enlaces profundos:
<activity ...> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="capgo.app" /> </intent-filter></activity>
Después de subir el archivo assetlinks.json
, puedes verificarlo usando la herramienta Digital Asset Links de Google. Si todo está configurado correctamente, verás una marca verde.
Para compilar y firmar tu aplicación, usa los siguientes comandos:
cd android./gradlew assembleReleasecd ..jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android/app/build/outputs/apk/release/app-release-unsigned.apk alias_namezipalign -v 4 android/app/build/outputs/apk/release/app-release-unsigned.apk capgo.apkadb install capgo.apk
Esto instalará la aplicación firmada en tu dispositivo Android conectado.
Configuración de Capacitor para Ajustes de Proyecto Nativo
Para automatizar los ajustes del proyecto nativo, considera usar el paquete Capacitor configure. Instálalo en tu proyecto:
npm install @capacitor/configure
Crea un archivo capacitor.config.yaml
en la raíz de tu proyecto:
vars: BUNDLE_ID: com.capgo.deeplinks PACKAGE_NAME: com.capgo.deeplinksplatforms: ios: targets: App: bundleId: $BUNDLE_ID entitlements: - com.apple.developer.associated-domains: ['applinks:capgo.app'] android: packageName: $PACKAGE_NAME
Ejecuta la herramienta de configuración con esta configuración:
npx cap-config run capacitor.config.yaml
Esto aplicará los ajustes especificados en el archivo YAML a tus proyectos nativos.
Conclusión
Configurar enlaces profundos con Capacitor para una aplicación Next.js implica configurar los ajustes de dominio y proyecto tanto para iOS como para Android. Si bien el proceso requiere atención al detalle, está optimizado en comparación con métodos más antiguos y no requiere plugins adicionales. Asegúrate de que los archivos de verificación de dominio se sirvan correctamente y compruébalos con las herramientas de plataforma respectivas. Una vez configurado, tu aplicación se abrirá sin problemas desde enlaces web, proporcionando una transición fluida para tus usuarios desde la web a la aplicación.