Gestion des liens d'application Android
Lorsqu'un utilisateur clique sur un lien, il n'a qu'une idée en tête, il veut voir le contenu qu'il souhaite.
Il existe maintenant 3 types de liens différents, le lien profond et l'URL du schéma HTTP/HTTPS.
Une URL de lien profond est quelque chose où vous avez défini des préfixes et un schéma dans votre fichier manifeste Android. Et lorsque le certain schéma est présent dans votre URL, il ouvre l'application.
Pour en savoir plus sur le lien profond, consultez mon article précédent sur le lien profond.
Dans Android 12, Google a modifié la manière dont les liens externes seront gérés par l'application.
À partir d'Android 12 (API niveau 31), une intention Web générique se résout en une activité dans votre application uniquement si votre application est approuvée pour le domaine spécifique contenu dans cette intention Web. Si votre application n'est pas approuvée pour le domaine, l'intention Web se résout à la place dans l'application de navigateur par défaut de l'utilisateur
Qu'est-ce que l'intention Web générique ?
Dans Android, il existe deux types d'intentions. Intention implicite et explicite.
L'intention explicite se produit lorsque vous savez exactement quel écran doit être ouvert. Comme toute activité.
L'intention implicite, en revanche, se produit lorsque le composant souhaité n'est pas connu ou lorsqu'il est demandé à Android de trouver une application pour gérer une demande. Comme n'importe quel lien webhttps://goo.gl/maps/VafZAqoiitZHzvqH6.
Maintenant, si votre URL a un schéma HTTP/HTTPS, elle peut également accéder à votre navigateur. Ou si votre application Android gère également cette URL, elle affichera une boîte de dialogue pour demander aux utilisateurs où ils souhaitent ouvrir cette URL ou cette application.
Mais pourquoi quelqu'un voudrait-il accéder au navigateur alors qu'une application peut afficher le contenu ? Les utilisateurs peuvent également toujours sélectionner, mais c'est une chose ultérieure. Initialement, nous voulons que l'utilisateur aille directement dans l'application si l'application est présente.
Liaison d'applications
Le schéma sera défini comme ci-dessous dans Android Manifest pour les liens Web :
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="websitepath.com" />
</intent-filter>
Comment faire de votre application l'option par défaut pour les liens d'application ?
Étape 1 : Ajoutez autoVerify= truele manifeste Android.
<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:host="websitepath.com"
android:scheme="https" />
<data
android:host="websitepath.com"
android:scheme="http" />
</intent-filter>
Cela se fait en créant un fichier JSON Asset Links.
Créer le fichier assetlinks.json
- Créer un nom de fichier vide
assetlinks.json - Ajoutez le contenu ci-dessous si vous gérez une seule application pour le lien
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "<Your App’s package name>",
"sha256_cert_fingerprints":
["<Your App’s SHA256 finger print>"]
}
}]
Cliquez sur Gradle dans le studio Android à partir du coin supérieur droit, vous verrez votre package là-bas aller dans package -> Tasks -> android ->signingReport . Vous obtiendrez l'empreinte digitale SHA-256. Copiez simplement cela et collez-le dans le fichier .json.
Il existe une autre option pour créer un fichier assetLinks.json à l'aide d'Android Studio.
Vous pouvez également générer une déclaration ici
Remplissez tous les détails et cliquez sur générer une déclaration. Il générera le contenu du fichier assetLinks.json.
Utiliser l'assistant d'association d'éléments d'Android Studio
Le générateur de fichiers de liens d'actifs numériques ouverts sera généré ici de la même manière.
Étape 3 : Téléchargez le fichier assetlinks.json sur l'hôte
Publiez le fichier assetlinks.json sur l'URL ci-dessous
https://domain.name/.well-known/assetlinks.json
Assurez-vous de ce qui suit :
- Le
assetlinks.jsonfichier est servi avec content-typeapplication/json. - Le
assetlinks.jsonfichier doit être accessible via une connexion HTTPS, que les filtres d'intention de votre application déclarent ou non HTTPS comme schéma de données. - Le
assetlinks.jsonfichier doit être accessible sans aucune redirection (pas de redirections 301 ou 302). - Si vos liens d'application prennent en charge plusieurs domaines hôtes, vous devez publier le
assetlinks.jsonfichier sur chaque domaine. Voir Prise en charge de la liaison d'applications pour plusieurs hôtes .
Vous avez maintenant créé le fichier et l'avez téléchargé, mais comment vérifier s'il est correct ?
Cliquez sur l'url ci-dessous
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://domainName&relation=delegate_permission/common.handle_all_urls
Remplacez domainName par votre domaine. S'il ressemble à ceci en bas, votre fichier est correct.
Vous pouvez également vérifier ici
Ajoutez tous les détails ici et cliquez sur Relevé de test. Si le fichier a été téléchargé avec succès, il renverra Succès.
C'est ça. Désormais, lorsque vous cliquez sur une URL externe, cela vous amène directement à l'application au lieu de vous montrer une fenêtre contextuelle pour choisir entre le navigateur et l'application.
Conclusion
- Utilisez
android:autoVerify=”true”dans le manifeste Android des filtres d'intention qui répondent aux intentions avec des liens HTTP. - Générez un fichier d'actif numérique assetlinks.json pour créer un lien entre l'hôte et l'application.
- Travaillez avec votre équipe backend pour déployer le fichier assetlinks.json sur l'hôte.
J'espère que cet article vous a été utile.
Si vous avez des commentaires ou des questions, écrivez-moi à [email protected]. Ou vous pouvez me joindre sur mon Linkedin https://www.linkedin.com/in/karishma-agrawal-she-her-06966a126/
Vos claps sont vraiment appréciés pour aider les autres à trouver cet article .
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































