Génération de DeepLinks au moment de la compilation Android

Table des matières

Génération de DeepLinks au moment de la compilation Android

Pranay Bansal

Les liens profonds sont des aspects importants de l’application qui rendent notre application accessible à l’aide de certains liens et notifications push et sont généralement la clé du stratégie de marketing.
Il est essentiel de connecter notre écosystème Web à celui des applications.

Abordons le problème

À mesure que votre application continue de croître, les liens profonds en fonction des exigences de votre marché en font de même. en ce qui concerne nos classes java / kotlin, nous avons tendance à suivre divers principes (SOLID, etc.) pour garder le code séparé et empêcher nos classes de devenir soi-disant « DIEU » classe mais qu’en est-il de votre manifeste?

Pour résoudre le problème, considérez que votre application prend en charge un seul lien profond pour ce lien profond particulier, vous devrez répondre aux schémas HTTP et HTTPS afin de télécharger avec succès votre apk sur le Play Store.

<data
android:host="www.xyz.xyz"
android:pathPrefix="/home"
android:scheme="http"
/>
<data
android:host="www.xyz.xyz"
android:pathPrefix="/home"
android:scheme="https"
/>

Pas de problème, pas mal pour l’instant… nous en mettrons deux entrées pour notre chemin et nous nous faisons assez facilement.

Mais un beau jour, votre entreprise décide de se lancer dans le monde pour dire 4 autres pays et prennent en charge 4 langues différentes (avec un chemin localisé comme {locale}/home/) maintenant ce serait un problème, à bien y penser, vous devrez ajouter 2 * 4 * 4 soit 32 entrées pour un seul pathPrefix et ce n’est qu’un exemple, les chemins peuvent facilement augmenter le nombre de entrées en fonction de la structure du chemin lui-même qui peut varier d’un cas à l’autre. 🤕

Comme nous le savons, les domaines, les paramètres régionaux ou tout ce qui mène à de nouveaux

entrée au préalable, alors essayons de trouver un script qui prend le chemin et rend le entrée dans le manifeste pour nous.

Comprendre le fichier manifeste généré

Il est absolument important de garder à l’esprit que le fichier manifeste généré est différent pour APK et Bundle.

  1. Créez un fichier Gradle distinct pour conserver vos configurations de lien profond. Disons «deeplink_config.gradle».
  2. Ajoutez ce qui suit à votre build.gradle fichier
apply from: 'deeplink_config.gradle'

3. Ajoutez une variable dans le fichier manifeste qui sera remplacée par

balises à l’intérieur de votre intent-filter.

<intent-filter
android:autoVerify="true"
tools:ignore="AppLinkUrlError"
>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
deepLinkPlaceholder
intent-filter>

4. Ajoutez du code à deeplink_config générer pour les deuxHTTP et HTTPS schème.

La méthode generateData prend votre host, listOfDeepLinkUrls, locales (dépend de votre cas d’utilisation) et list of domains ex:[[« Www.xyz.in »].

listOfDeepLinkUrls stocke tous nos pathsPrefixes.
Donc, pour ajouter un nouveau lien profond à votre application, il vous suffit de l’ajouter à la liste plutôt que d’en ajouter plusieurs manuellement à l’intérieur du manifest.

5. Écrivez ces générés dans votre apk et votre bundle, les fichiers manifestes générés comme discuté précédemment apk et bundle ont tous deux leurs fichiers manifestes séparés et pour écrire sur ceux-ci, nous aurions besoin d’un chemin vers ces fichiers générés.

manifestOutputDirectory peut être utilisé directement pour obtenir le chemin d’accès au fichier manifeste d’Apk mais je n’ai pas pu en trouver un pour les bundles alors utilisons manifestOutputDirectory pour extraire le chemin du fichier manifeste du bundle.

Pour info: Il pourrait y avoir un meilleur moyen d’extraire le chemin du manifeste du bundle. Je serais heureux de discuter si vous avez une idée. 😃

6. Après avoir effectué toutes les modifications à l’intérieur deeplink_config.gradle fichier permet de l’utiliser, à l’intérieur build.gradle appel generateData() dans défini productFlavors de votre application afin de passer un list of domains comme requis par cette méthode.
Si vous devez insérer des variables dans votre AndroidManifest.xml fichier défini dans votre build.gradle fichier, vous pouvez le faire avec le manifestPlaceholders propriété. Cette propriété prend une carte de paires clé-valeur.

7. Pour tester le généré vous pouvez mettre un print(links) à la fin de generateData() en outre, vous pouvez analyser l’apk ou peut-être ouvrir le fichier manifeste généré Comme montré ci-dessus.