Les liens universels sur iOS et les liens d'application sur Android permettent aux utilisateurs d'être redirigés directement dans votre application à partir d'un lien, en évitant le navigateur. Cela est particulièrement utile pour améliorer l'expérience utilisateur et maintenir le contexte d'une page web à une application. Dans ce guide, nous passerons en revue le processus de configuration de ces liens profonds pour une application Next.js en utilisant Capacitor.
La configuration des liens profonds ne nécessite pas beaucoup de code, mais elle implique une certaine configuration. À la fin de ce guide, vous serez en mesure de cliquer sur un lien comme https://www.capgo.app/details/22 et votre application s'ouvrira sur la page correcte si elle est installée.
Configuration des liens profonds Next.js
Premièrement, nous allons créer une nouvelle application Next.js et une page de détails pour la tester :
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
Vérifiez que votre ID de bundle soit correctement configuré dans le fichier __CAPGO_KEEP_0__.config.json, car il est crucial pour la configuration : Pour la mise en route, Next.js utilise la mise en route basée sur les fichiers, donc en créant un fichier à nous avons déjà configuré notre route sauvage. capacitor.config.json , nous pouvons récupérer l'ID à partir de l'URL à l'aide du routeur intégré de Next.js :
{
"appId": "com.capgo.deeplinks",
"appName": "capgoLinks",
"webDir": "out",
"bundledWebRuntime": false
}
Maintenant, traitons l'événement avec __CAPGO_KEEP_0__. Cet événement est déclenché lorsque l'application est ouverte via un schéma de URL personnalisé. Ajoutez un écouteur dans le fichier : pages/details/[id].jsEnsure your
bundle ID pages/details/[id].jsis correctly set in the
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
file, as it’s crucial for the setup: appUrlOpen event with Capacitor. This event is triggered when the app is opened via a custom URL scheme. Add a listener in the pages/_app.js we’ve already set up our wildcard route.
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
Ce code écoute l'événement et navigue vers la route appropriée dans votre application Next.js. appUrlOpen Lorsque l'événement se produit, votre application est redirigée vers la bonne route.
Configuration iOS
Pour iOS, vous aurez besoin d'un ID d'application avec les domaines associés activés. Créez un fichier apple-app-site-association avec le contenu suivant, en remplaçant YOURTEAMID et com.your.bundleid par votre ID d'équipe et votre ID de bundle réels :
{
"applinks": {
"apps": [],
"details": [
{
"appID": "YOURTEAMID.com.your.bundleid",
"paths": ["*"]
}
]
}
}
Envoyez ce fichier dans le .well-known répertoire sur votre domaine, le rendant accessible à l'adresse https://www.capgo.app/.well-known/apple-app-site-association.
Dans Xcode, ajoutez le domaine à vos entités d'application sous la forme applinks:capgo.app.
Configuration Android
Pour les liens d'application Android, suivez ces étapes :
- Générez un fichier de clé de stockage si vous n'en avez pas un.
- Obtenez la empreinte SHA256 du fichier de clé de stockage.
- Créez un fichier assetlinks.json avec votre nom de package et l'empreinte SHA256. Envoyez ce fichier dans le
- répertoire sur votre domaine.
.well-knownDans votre
, ajoutez un AndroidManifest.xmlà l' intent-filter élément qui gère les liens profonds : activity protectedTokens
<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 avoir téléchargé le fichier, vous pouvez le vérifier à l'aide de l'outil de liens numériques d'actifs de Google. Si tout est correctement configuré, vous verrez un signe de vérification vert. assetlinks.json Pour vérifier que tout est correct, utilisez l'outil de liens numériques d'actifs de Google.
Pour construire 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 Configurez les paramètres du projet Native
Pour automatiser les paramètres du projet Native, envisagez d'utiliser le Capacitor package de configurationInstallez-le dans votre projet :
npm install @capacitor/configure
Créez un capacitor.config.yaml fichier au niveau de 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
Exécutez l'outil de configuration avec cette configuration :
npx cap-config run capacitor.config.yaml
Cela appliquera les paramètres spécifiés dans le fichier YAML à vos projets Native.
Conclusion
La mise en place des liens profonds avec Capacitor pour une application Next.js implique la configuration de votre domaine et des paramètres de projet pour les deux iOS et Android. Bien que le processus nécessite une attention aux détails, il est cependant plus fluide que les méthodes plus anciennes et ne nécessite pas d'extensions supplémentaires. Vérifiez que vos fichiers de vérification de domaine sont correctement servis et vérifiez-les avec les outils de plateforme correspondants. Une fois configuré, votre application s'ouvrira de manière fluide à partir des liens web, offrant une transition smooth pour vos utilisateurs de la web à l'application.