Développer
Liens profonds
Un lien profond ouvre un écran précis de votre application installée, comme un défi, une invitation de parrainage ou une page produit. Si l'application n'est pas installée, le visiteur est envoyé vers le store, exactement comme avec votre lien intelligent. Les liens profonds sont disponibles avec les forfaits Pro, Studio et À vie. Les Universal Links et les Android App Links nécessitent aussi un domaine personnalisé, qui fait partie du forfait Studio.
Fonctionnement d'un lien profond
Ajoutez /open/ et le chemin dans l'application à votre lien intelligent. La chaîne de requête est également transmise :
https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
| Visiteur | Ce qui se passe |
|---|---|
| iPhone ou iPad, avec un URL scheme iOS défini | Une courte page tente d'ouvrir habitly://challenges/30-days?ref=newsletter. Si l'application n'est pas installée, le visiteur poursuit vers l'App Store. |
| Android ou Huawei, avec un nom de package défini | Une courte page ouvre un intent Android pour le même chemin, limité à votre package. Chrome ouvre l'application si elle est installée, et suit sinon la solution de repli vers Google Play. |
| Téléphone ou tablette, sans paramètres de lien profond pour sa plateforme | Redirection directe vers la solution de repli. |
| Ordinateurs et robots | Redirection vers le lien intelligent, en conservant la chaîne de requête. |
La solution de repli est la destination vers laquelle votre lien intelligent enverrait cet appareil, selon vos règles de redirection, avec transmission des balises UTM. Si cette plateforme n'a pas de lien de store, la solution de repli est la page de destination. Si les liens profonds ne sont pas configurés du tout, ou si le forfait ne les inclut pas, chaque visiteur est redirigé vers le lien intelligent.
Les chemins peuvent contenir des lettres, des chiffres et les caractères / _ - . ~ %. Les autres caractères sont supprimés, encodez donc en pourcentage tout autre caractère, comme les espaces (%20).
Configuration
Ouvrez l'onglet Liens profonds de l'application et remplissez les champs des plateformes que vous prenez en charge :
| Champ | Exemple | Utilisé pour |
|---|---|---|
| URL scheme iOS | habitly:// | Ouvrir l'application depuis la page de redirection sur iPhone et iPad |
| Team ID Apple | A1B2C3D4E5 | Universal Links. L'identifiant de 10 caractères indiqué dans les Membership details de votre compte Apple Developer. |
| Bundle ID iOS | com.habitly.app | Universal Links |
| Nom du package Android | com.habitly.app | Ouvrir l'application sur les appareils Android et Huawei |
| Scheme Android | habitly | Le scheme géré par votre intent filter |
| Empreintes de certificat SHA-256 | 14:6D:E9:83:...:44:E5 | Android App Links. Ajoutez-en une ou plusieurs, séparées par des virgules, des espaces ou des retours à la ligne. |
habitly. Si vous le laissez vide, https est utilisé et la première partie du chemin devient l'hôte (https://challenges/30-days). Cela ne fonctionne que si votre intent filter s'y attend.Enregistrer le scheme dans votre application
iOS, dans Info.plist :
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>habitly</string>
</array>
</dict>
</array>
Android, dans AndroidManifest.xml :
<activity android:name=".MainActivity" android:exported="true">
<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="habitly" />
</intent-filter>
</activity>
Dans votre application, lisez l'URL entrante, affichez l'écran correspondant et lisez les paramètres de requête dont vous avez besoin. Envoyez les chemins inconnus vers l'écran d'accueil, car les gens modifient les URL.
Universal Links et Android App Links
Les liens avec scheme affichent d'abord une courte page de redirection, et iOS peut demander au visiteur de confirmer. Les liens vérifiés évitent cette étape : lorsque l'application est installée, le système l'ouvre directement. La vérification nécessite un domaine qui appartient uniquement à votre application, elle fonctionne donc sur votre domaine personnalisé. Dès que get.habitly.app est connecté, mapps.one sert les fichiers d'association pour vous :
| Fichier | Généré à partir de |
|---|---|
https://get.habitly.app/.well-known/apple-app-site-association(également disponible à /apple-app-site-association) | Team ID Apple et bundle ID |
https://get.habitly.app/.well-known/assetlinks.json | Nom du package Android et empreintes SHA-256 |
Le fichier Apple couvre tous les chemins sous /open/ :
{
"applinks": {
"details": [
{
"appIDs": ["A1B2C3D4E5.com.habitly.app"],
"components": [
{ "/": "/open/*", "comment": "Deep links created with mapps.one" }
]
}
]
},
"webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}
Le fichier Android :
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.habitly.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Chaque fichier renvoie « 404 Not Found » tant que ses champs ne sont pas valides : un Team ID de 10 caractères et un bundle ID pour Apple, et un nom de package avec au moins une empreinte au format AA:BB:... (32 paires) pour Android. Utilisez l'empreinte de la clé Play App Signing indiquée dans Play Console → App integrity, et ajoutez aussi votre clé d'importation si vous testez des builds signés localement. Les fichiers sont mis en cache pendant une heure. Apple les met aussi en cache sur ses propres serveurs, réinstallez donc l'application pour tester vos modifications.
Configurer votre application
iOS : ajoutez la fonctionnalité Associated Domains avec applinks:get.habitly.app.
Android : ajoutez un intent filter vérifié pour votre domaine :
<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="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>
Utilisez ensuite des liens comme https://get.habitly.app/open/challenges/30-days dans vos campagnes. Si l'application n'est pas installée, le navigateur charge la page et le même processus de repli s'applique.
mapps.one est partagé par de nombreuses applications. Les liens sur mapps.one/habitly/open/ continuent de fonctionner via la page de redirection. Les URL de liens profonds affichées dans le tableau de bord et dans l'API utilisent mapps.one, remplacez donc l'hôte par votre domaine lorsque vous voulez des liens vérifiés.Statistiques
Une ouverture est comptée dans Ouvertures de lien profond lorsqu'un téléphone ou une tablette charge une URL /open/ et que mapps.one tente d'ouvrir l'application. La redirection de repli vers le store n'est pas comptée une seconde fois. Les liens vérifiés qui ouvrent directement l'application n'atteignent jamais mapps.one, ils ne sont donc pas comptés. Pour ceux-là, utilisez les statistiques de votre propre application.