Comment ajouter des liens vers des applications Android avec redirection

Découvrez comment configurer les liens vers les applications Android pour gérer les redirections et les liens profonds │ utilisateurs directement vers le contenu de votre application.

Intermediate

Les liens vers des applications Android offrent une expérience utilisateur fluide en permettant aux URL HTTP/HTTPS de s'ouvrir directement dans votre application, sans passer par la boîte de dialogue de désambiguïsation du navigateur. Ils renvoient également vers le navigateur si votre application n'est pas installée. Leur mise en œuvre, en particulier avec des redirections, implique plusieurs étapes clés.

Voici comment ajouter des liens vers des applications Android avec des redirections :

1. Configurez votre fichier AndroidManifest.xml

Vous devez déclarer un filtre d'intention dans votre fichier AndroidManifest.xml pour l'activité qui gérera les liens entrants. Ce filtre d'intention indique au système Android les URL que votre application peut ouvrir.

  • android:autoVerify="true" : cet attribut essentiel permet la vérification automatique de votre application en tant que gestionnaire par défaut pour les modèles d'URL spécifiés.
  • <action android:name="android.intent.action.VIEW" /> : cela spécifie que le filtre d'intention est accessible depuis Google Search et gère les actions d'affichage.
  • <category android:name="android.intent.category.DEFAULT" /> : cela permet à votre application de répondre aux intentions implicites.
  • <category android:name="android.intent.category.BROWSABLE" /> : ceci est nécessaire pour que le filtre d'intention soit accessible depuis un navigateur Web, permettant ainsi aux utilisateurs d'ouvrir votre application à partir d'un lien profond dans un navigateur.
  • Balise <data> : définit le format URI que votre application peut gérer. Vous devez spécifier le schéma (par exemple, https), l'hôte (votre domaine) et, éventuellement, un chemin ou un préfixe de chemin.

Exemple d'entrée AndroidManifest.xml :

<activity android:name=".DeepLinkActivity">
 <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="www.example.com"
 android:pathPrefix="/products" />
 </intent-filter> </activity> 

Cette configuration signifie que votre application peut gérer des URL telles que https://www.example.com/products/item123.

2. Déclarer l'association du site Web avec assetlinks.json

Pour vérifier que votre application est bien le propriétaire légitime des URL qu'elle prétend gérer, vous devez héberger un fichier JSON Digital Asset Links sur votre site Web. Ce fichier établit une association sécurisée entre votre site Web et votre application Android.

  1. Créer assetlinks.json : Le fichier doit contenir le nom du package de votre application et l'empreinte digitale du certificat SHA256.

    json [{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.your.packagename", "sha256_cert_fingerprints": ["YOUR_SHA256_FINGERPRINT"] } }] * package_name : Votre identifiant d'application Android. * sha256_cert_fingerprints : l'empreinte SHA256 de la clé de signature utilisée pour créer votre APK. Vous pouvez l'obtenir à partir de votre console Google Play (si vous utilisez Play App Signing) ou en utilisant la commande keytool pour les keystores locaux.

  2. Héberger le fichier : Téléchargez ce fichier assetlinks.json sur votre serveur web à l'adresse https://your.domain.com/.well-known/assetlinks.json. Assurez-vous qu'il est accessible via HTTPS.

3. Traitez l'intention entrante dans votre activité

Dans l'activité Android spécifiée dans votre AndroidManifest.xml, vous récupérerez les données Intent entrantes afin de déterminer le contenu à afficher.

class DeepLinkActivity : AppCompatActivity() {
 override fun onCreate(savedInstanceState: Bundle ?) {  super.onCreate(savedInstanceState)
 setContentView(R.layout.activity_deep_link)

 intent?.data?.let { uri ->
 // l'uri sera quelque chose comme https://www.example.com/products/item123
 val productId = uri.lastPathSegment // Extrait « item123 »  // Utilise productId pour récupérer et afficher le contenu pertinent
 findViewById<TextView>(R.id.textView).text = "Product ID: $productId"  }  }

 // Gérer les nouvelles intentions si l'activité est déjà en cours d'exécution  override fun onNewIntent(intent: Intent?) {
 super.onNewIntent(intent)  setIntent(intent) // Mettre à jour l'intention de l'activité
 // Traiter ici les nouvelles données d'intention, comme dans onCreate  intent?.data?.let { uri ->  val productId = uri.lastPathSegment
 findViewById<TextView>(R.id.textView).text = "New Product ID: $productId"
 }  } } 

4. Fonctionnement des redirections avec les liens vers des applications Android

Les liens vers des applications Android sont conçus pour fonctionner de manière transparente avec les redirections HTTP/HTTPS. Lorsqu'un utilisateur clique sur une URL qui redirige, le système Android suit la chaîne de redirection. Le point crucial est que l'URL finale après toutes les redirections doit correspondre à la configuration intent-filter dans votre AndroidManifest.xml et être couverte par votre fichier assetlinks.json.

  • Redirections côté serveur : si votre serveur web effectue une redirection 301 (permanente) ou 302 (temporaire), le système Android la suivra. Par exemple, si https://www.example.com/old-product redirige vers https://www.example.com/products/item123, et que votre application est configurée pour gérer https://www.example.com/products/, l'application s'ouvrira avec item123.
  • Comportement de secours : Si l'application n'est pas installée sur l'appareil de l'utilisateur ou si la vérification du domaine échoue, le lien s'ouvrira dans un navigateur Web.