Aller au contenu principal
Deep linking

Comment intégrer les Universal Links dans Next.js avec Capacitor

Découvrez étape par étape comment configurer les liens universels pour votre application Next.js avec Capacitor sur les plateformes iOS et Android.

Comment intégrer les Universal Links dans Next.js avec Capacitor Capgo illustration de blog

Les Universal Links sur iOS et les App Links sur Android permettent d'ouvrir directement votre app depuis un lien, sans passer par le navigateur. C'est particulièrement utile pour améliorer l'expérience utilisateur et conserver le contexte d'une page web jusqu'à l'app. Dans ce guide, nous allons voir comment configurer ces deep links pour une app Next.js avec Capacitor. Pour l'attribution et les deep links différés, @capgo/capacitor-appsflyer peut router les campagnes d'installation vers le bon écran dans l'app.

Configurer des deep links ne demande pas beaucoup de code, mais implique un peu de configuration. À la fin de ce guide, vous pourrez cliquer sur un lien comme https://www.capgo.app/details/22 et que votre application s’ouvre sur la bonne page si elle est installée.

D’abord, nous allons créer une nouvelle application Next.js et une page de détails pour les tests :

npx create-next-app@latest capgoLinks
cd capgoLinks
mkdir pages/details
touch pages/details/[id].js
npm run build
npx cap add ios
npx cap add android

Assurez-vous ID du bundle est correctement défini dans le capacitor.config.json , car c’est essentiel pour la configuration :

{
  "appId": "com.capgo.deeplinks",
  "appName": "capgoLinks",
  "webDir": "out",
  "bundledWebRuntime": false
}

Pour le routage, Next.js utilise le routage basé sur les fichiers ; en créant un fichier dans pages/details/[id].js, nous avons déjà configuré notre route wildcard.

Dans pages/details/[id].js, nous pouvons récupérer l’ID depuis l’URL grâce au routeur intégré 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

Maintenant, gérons l’ appUrlOpen événement avec Capacitor. Cet événement est déclenché lorsque l’app est ouverte via un schéma d’URL personnalisé. Ajoutez un listener dans le pages/_app.js fichier :

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

This code listens for the appUrlOpen événement et navigue vers la route appropriée dans votre application Next.js.

Configuration iOS

Pour iOS, vous aurez besoin d’un app ID avec Associated Domains activé. Créez un apple-app-site-association fichier avec le contenu suivant, en remplaçant YOURTEAMID et com.your.bundleid par votre ID d’équipe et votre bundle ID réels :

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOURTEAMID.com.your.bundleid",
        "paths": ["*"]
      }
    ]
  }
}

Envoyez ce fichier dans le .well-known répertoire de votre domaine, afin qu’il soit accessible à l’adresse https://www.capgo.app/.well-known/apple-app-site-association.

Dans Xcode, ajoutez le domaine aux entitlements de votre application en utilisant le format applinks:capgo.app.

Configuration Android

Pour les App Links Android, suivez ces étapes :

  1. Générez un fichier keystore si vous n’en avez pas.
  2. Récupérez l’empreinte SHA256 depuis le keystore.
  3. Créez un fichier assetlinks.json fichier contenant votre nom de package et l’empreinte SHA256.
  4. Envoyez ce fichier dans le .well-known répertoire de votre domaine.

Dans votre AndroidManifest.xml, ajoutez un intent-filter aux activity élément qui gère les deep links :

<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>

Après l’upload du assetlinks.json fichier, vous pouvez le vérifier à l’aide de l’outil Digital Asset Links de Google. Si tout est correctement configuré, vous verrez une coche verte.

Pour compiler et signer votre application, utilisez les commandes suivantes :

cd android
./gradlew assembleRelease
cd ..
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android/app/build/outputs/apk/release/app-release-unsigned.apk alias_name
zipalign -v 4 android/app/build/outputs/apk/release/app-release-unsigned.apk capgo.apk
adb install capgo.apk

Cela installera l’application signée sur votre appareil Android connecté.

Capacitor Configurer les paramètres du projet natif

Pour automatiser la configuration du projet natif, envisagez d'utiliser le paquet de configuration Capacitor. Installez-le dans votre projet :

npm install @capacitor/configure

Créer un capacitor.config.yaml fichier à la racine de votre projet :

vars:
  BUNDLE_ID: com.capgo.deeplinks
  PACKAGE_NAME: com.capgo.deeplinks
platforms:
  ios:
    targets:
      App:
        bundleId: $BUNDLE_ID
    entitlements:
      - com.apple.developer.associated-domains: ['applinks:capgo.app']
  android:
    packageName: $PACKAGE_NAME

Lancez l'outil de configuration avec cette config :

npx cap-config run capacitor.config.yaml

Cela appliquera les paramètres spécifiés dans le fichier YAML à vos projets natifs.

Conclusion

Configurer des deep links avec Capacitor pour une application Next.js implique de paramétrer votre domaine et les réglages de votre projet pour iOS et Android. Le processus exige de la rigueur, mais il est bien plus simple que les anciennes méthodes et ne nécessite aucun plugin supplémentaire. Vérifiez que vos fichiers de vérification de domaine sont correctement servis et contrôlez-les avec les outils de chaque plateforme. Une fois la configuration en place, votre application s'ouvrira de manière transparente depuis les liens web, pour une transition fluide de vos utilisateurs du web vers l'app.

Si vous utilisez Comment intégrer les Universal Links dans Next.js avec Capacitor pour planifier le travail sur les plugins natifs, connectez-l’à Capgo Répertoire des plugins pour le workflow produit dans Capgo Plugin Directory, Plugins Capacitor par Capgo pour les détails d'implémentation dans Plugins Capacitor par Capgo, Ajouter ou mettre à jour des plugins pour les détails d'implémentation dans Adding or Updating Plugins, Alternatives aux plugins Ionic Enterprise pour le workflow produit dans les alternatives aux plugins Ionic Enterprise, et Capgo Native Build pour le workflow produit dans Capgo Native Builds.

Live updates pour les apps Capacitor

Lorsqu'un bug de la couche web est en ligne, déployez le correctif via Capgo au lieu d'attendre des jours l'approbation des stores. Les utilisateurs reçoivent la mise à jour en arrière-plan, tandis que les changements natifs suivent le circuit de validation habituel.

Les derniers articles du blog

Capgo vous offre les meilleures informations pour créer une application mobile vraiment professionnelle.