Mise à jour: À la base, ce rapport fut publié le 24 juillet 2015, mais fut mis à jour depuis avec les toutes dernières informations sur iOS 9.2. Maintenant qu’Apple ne prend plus en charge les schémas d’URI pour les liaisons ciblées, , les développeurs doivent mettre en place des liaisons universelles pour obtenir des liaisons ciblées correctes sur iOS. Si vous êtes déjà un utilisateur des schémas d’URI, consultez notre blog sur le passage aux liaisons ciblées.
Chez Branch, toute notre vie tourne autour des liaisons ciblées mobiles. Nous avons créé une liaison unique que vous pouvez utiliser partout : chaque plate-forme, chaque appareil et chaque application le stocke pour diriger les utilisateurs vers votre application. Il s’agit d’une liaison unique, entièrement configuré pour diriger vers votre application à partir de n’importe quel canal (Facebook, Twitter, Gmail, etc.) et pour être répertorié dans tous les portails de recherche (indexation d’application par Google, recherche Bing, Apple Spotlight).
C’est tout simple et ça marche. En fait, nous avons déjà écrit des articles dans le blog sur la manière de configurer l’indexation d’application par Google и liaison ciblée sur Facebook, et la consulter.
Lorsque Apple a annoncé des liaisons universelles lors de son discours à la dernière WWDC, nous étions impatients de l’intégrer dans la plate-forme de création de liaisons ciblées de Branch. Nous étions loin de savoir qu’il serait si compliqué de réussir à le faire fonctionner. Après avoir passé beaucoup trop de temps dessus en nous aidant de la très maigre documentation fournie, nous avons pensé qu’il serait intéressant de créer un guide pour partager la manière d’agir en vue d’aider toutes les autres personnes.
Comment fonctionnent les liaisons universelles dans iOS 9?
Avant l’utilisation des liaisons universelles, le principal moyen d’ouvrir une application après son installation était d’essayer de la rediriger vers un schéma d’URI de l’application (ainsi enregistré dans la PLIST de l’application) dans Safari. Cela mettait en place la logique de routage mais il n’y avait aucun moyen de vérifier si l’application était installée ou non. Cela signifiait que les développeurs devaient passer 100% de leur temps a essayer d’appeler le schéma d’URI, dans l’éventualité improbable où l’application serait installée avant de se replier dignement sur l’App Store en l’absence d’utilisation d’un minuteur.
Le but des liaisons universelles iOS 9 était de remédier à cela. Au lieu de d’abord ouvrir Safari après avoir cliqué sur une liaison, iOs vérifie si une liaison universelle a été enregistrée pour le domaine associé à la liaison, puis il vérifie si l’application correspondante est installée. Si l’application est actuellement installée, elle s’ouvre. Si ce n’est pas le cas, Safari s’ouvre et la liaison du ou des http(s) se charge.
De manière fonctionnelle, cela vous permet d’avoir une seule liaison qui ouvre soit votre application, soit votre site mobile.
Guide d’intégration de la liaison universelle
Voici les étapes générales pour que les liaisons universelles fonctionnent pour votre application:
1. Configurez votre application pour enregistrer les domaines approuvés
- Enregistrez votre application sur developer.apple.com.
- Activez Domaines associés sur l’identificateur de votre application
- Activez Domaines associés dans votre projet Xcode
- Ajoutez le droit correspondant au domaine
- Assurez-vous que le fichier des droits est inclus lors de la création
Si vous utilisez Branch, il n’est pas utile d’aller plus loin. Sinon, passez à la partie deux.
2. Configurez votre site Web pour l’hébergement du fichier apple-app-site-association
- Achetez un nom de domaine ou choisissez-en un parmi ceux que vous possédez
- Obtenez la certification SSL pour le nom du domaine
- Créez un fichier
apple-app-site-association
JSON. - Signez le fichier JSON avec la certification SSL
- Configurez le serveur de fichiers
Si vous utilisez le service Branch, nous vous évitons toute la complexité de la création des certifications SSL, de la signature et de l’hébergement du fichier JSON de votre serveur, aussi il vous suffit de modifier le code de votre application pour l’exploiter. Nous en parlerons à la fin de cet article.
Remarque: Nous avons également construit un outil permettant de vérifier si votre fichier apple-app-site-association est configuré correctement.
Section 1: Configuration des droits de votre application
Afin d’enregistrer votre projet Xcode pour avoir les liaisons universelles, vous devez créer un ID d’application dans le portail pour développeur Apple et activer les droits concernés. Cela ressemble beaucoup à la configuration requise pour des achats dans l’application.
Vous ne pouvez pas utiliser un identifiant de l’application à caractères génériques pour les liaisons universelles
Enregistrez votre application sur developers.apple.com
Rendez-vous d’abord sur developer.apple.com et connectez-vous. Puis cliquez sur Certificat, identifiants et profils avant de cliquer sur Identifiants.
Si vous ne disposez pas déjà d’un identifiant d’application enregistré, vous devez en créer un en cliquant sur le signe +. Si vous en avez un, passez à la partie suivante.
Ici, vous devez compléter 2 champs : nom et ID de l’offre groupée. En ce qui concerne le nom, vous saisissez ce que vous voulez. En ce qui concerne l’ID de l’offre groupée, vous devez compléter le champ avec la valeur de l’offre groupée
Vous pouvez la récupérer en regardant dans l’onglet Généralités de votre projet Xcode pour trouver la cible correct de la version.
Activez Domaines associés dans votre identificateur d’applications sur developers.apple.com
Pour trouver votre identificateur d’application pré-existant ou actif, faites défiler jusqu’à la dernière partie et cochez les services Domaines Associés.
Faites défiler et cliquez sur Enregistrer.
Activez Domaines associés dans votre projet Xcode
Maintenant, vous allez devoir activer le droit des Domaines associés à l’intérieur de votre projet Xcode. Assurez-vous d’abord que votre projet Xcode dispose de la même Équipe sélectionnée que celle dans laquelle vous venez d’enregistrer votre identificateur d’applications. Puis passez à l’onglet Capacités du fichier de votre projet.
Faites défiler et activez Domaines associés afin que l’accordéon s’ouvre.
Si vous constatez une erreur telle que celle-ci, vérifiez que:
- la bonne équipe est sélectionnée
- l’identifiant de l’offre groupée de votre projet Xcode correspond à celui utilisé pour enregistrer l’identificateur d’applications
Ajouter le droit du domaine
Dans la section des domaines, ajoutez la balise du domaine approprié. Vous devez y ajouter en préfixe applinks:. Dans ce cas, vous voyez que nous avons ajouté applinks:yourdomain.com.
Assurez-vous que le fichier des droits est inclus lors de la création
Dernièrement, je ne sais pour quelle raison, Xcode 7 ne contenait pas le fichier de mes droits dans ma version. Dans le navigateur du projet, assurez-vous que votre nouveau fichier de droits est sélectionné pour l’adhésion aux cibles des droits, de manière à le constituer.
Si vous utilisez les liaisons Branch, il n’est pas utile d’aller plus loin! Si ce n’est pas le cas, poursuivez votre lecture ou utilisez le bouton ci-dessous pour démarrer l’intégration.
Si vous voulez vous éviter des heures de migraine, vous pouvez vous dispenser de tous les travaux d’hébergement JSON et de certification SSL en laissant simplement les liaisons Branch faire l’hébergement pour vous.
https://dev.branch.io/recipes/branch_universal_links
Cependant, si vous êtes un maniaque du contrôle et avide de châtiments, allez-y, continuez.
Section 2 : Configurer votre fichier apple-app-site-association
Les liaisons universelles transforment l’URL de votre site Web en un lien d’application, aussi il est indispensable que vous utilisiez un serveur Web pour les exploiter. Pour faciliter ce processus, utilisez votre validateur de liaisons universelles pour vérifier si votre fichier apple-app-site-association est configuré correctement.
Choisissez un domaine
Identifiez d’abord le domaine que vous aimeriez utiliser pour vos liaisons universelles. Vous pouvez en enregistrer un nouveau ou en utiliser un existant déjà. Lors de l’enregistrement d’un nouveau, nous préférons utiliser un bureau d’enregistrement propre, non sujet aux spams comme gandi.net.
Obtenir la certification SSL
Vous devez acquérir les fichiers de certification SSL pour le domaine que vous utilisez pour héberger les liaisons universelles. Pour ce faire, vous devez utiliser un service tiers pour enregistrer votre domaine en vue de l’obtention de la certification SSL et pour créer les fichiers dont vous avez besoin. Après avoir prospecté, nous avons opté pour Digicert pour la gestion de branch.io et des sous-domaines associés.
Voici les étapes de la création de votre certification SSL:
- Consultez https://www.digicert.com/easy-csr/openssl.htm et complétez le formulaire en haut de la page pour générer une commande openSSL. Laissez cette fenêtre ouverte
- Connectez-vous à votre serveur distant
- Exécutez la commande openSSL pour générer une demande de signature du certificat (.csr) et un fichier de certification (.cert)
- Payez votre certification SSL sur https://www.digicert.com/welcome/ssl-plus.htm.
- Attendez que Digicert approuve et vous envoie les fichiers finaux
- Enfin, déplacez yourdomain.com.cert, yourdomain.com.key et digicertintermediate.cert dans le même répertoire de votre serveur distant
Créez votre fichier JSON apple-app-site-association
Ce fichier JSON dispose d’une structure tout à fait standard, aussi vous pouvez vous contenter de copier cette version et d’apporter les modifications nécessaires à vos besoins. Je donnerai des détails sur l’emplacement où obtenir les valeurs correctes ci-dessous.
{ "applinks": { "apps": [], "details": [ { "appID": "T5TQ36Q2SQ.com.branch.sdk.TestBed", "paths": ["*"] } ] } }
Les seuls champs que vous devez changer sont associés à: T5TQ36Q2SQ.com.branch.sdk.TestBed. Il s’agit en fait de deux valeurs associées à une durée. Les deux valeurs se trouvent sur developers.apple.com dans les sections Identificateurs -> ID de l’application. Cliquez simplement sur l’ID de l’application enregistrée comme indiqué ci-dessous.
Dans cet exemple, associez le préfixe et l’ID à une durée afin que cela ressemble à : T5TQ36Q2SQ.com.branch.sdk.TestBed.
Enregistrez ce fichier JSON sous apple-app-site-association-unsigned.
Signez le fichier JSON à l’aide de vos certificats SSL
Remarque: si vousavez certifié votre domaine en tant que HTTPS, vous pouvez ignorer cette étape et envoyer le JSON en texte clair. Apple’s updated requirements:
Si votre application fonctionne sur iOS 9 ou version ultérieure et que vous utilisez le protocole HTTPS pour файлаapple-app-site-association, vous pouvez créer un fichier de texte brut, qui va utiliser l’application/json, et vous n’avez pas besoin de signer. Si la prise en charge Handoff et Shared Web Credentials dans iOS 8, vous devez signer le fichier comme indiqué dans Shared Web Credentials Reference.
Tous les fichiers apple-app-site-association sur la plate-forme Branch maintenant application/json.
Téléchargez le fichier apple-app-site-association-unsigned sur votre serveur dans le même répertoire que les fichiers de certification et de clé des étapes précédentes. À l’aide de la commande en ligne, modifiez le répertoire de ce dossier et exécutez la commande suivante:
cat apple-app-site-association-unsigned | openssl smime -sign -inkey yourdomain.com.key -signer yourdomain.com.cert -certfile digicertintermediate.cert -noattr -nodetach -outform DER > apple-app-site-association
Cela génère le fichier apple-app-site-association
Configurez le serveur de votre fichier
Très bien! Vous avez donc signé votre fichier apple-app-site-association. Maintenant, vous n’avez plus qu’à configurer le serveur de votre fichier pour qu’il héberge cela pour vous. Il y a quelques conditions:
- Il doit être envoyé avec l’en-tête application/pkcs7-mime
- Il doit être envoyé à partir du point de terminaison youdomain.com/apple-app-site-association
- Il doit renvoyer un code http 200.
Nous avons configuré celui de toutes les applications Branch intégrées à l’aide de nos serveurs de liaisons Node+Express. Au cas où cela pourrait vous être utile, voici le code que nous avons utilisé:
var aasa = fs.readFileSync(__dirname + '/static/apple-app-site-association'); app.get('/apple-app-site-association', function(req, res, next) { res.set('Content-Type', 'application/json'); res.status(200).send(aasa); });
Guide d’intégration des liaisons universelles pour Branch et iOS 9
Encore une fois, vous pouvez éviter tout le travail d’hébergement de JSON et de certification SSL et simplement utiliser les liaisons Branch pour qu’elles fassent l’hébergement pour vous.
Bonne liaison!