web-dev-qa-db-fra.com

Liens universels sur iOS vs liens profonds (schémas d'URL)

Pendant que je lis, iOS 9 a introduit les liens universels. Dans la section "Support Universal Links" d'Apple App Search Programming Guide , il est dit que ce n'est pas exactement comme un lien profond avec des schémas d'URL, mais je ne suis pas totalement clair sur ce sujet:

  • Quelle est réellement la différence entre Universal Link et les schémas d'URL? Est-ce qu'un lien universel est uniquement destiné aux hyperliens des sites Web et aux applications de messagerie ou de messages?
  • Les liens universels remplacent-ils les schémas d'URL?
  • Les liens universels sont-ils un type de lien profond?
34
AppsDev

Les liens universels permettent à iOS d'envoyer une demande d'URL Web à une application donnée, au lieu de les ouvrir dans le navigateur.

Les schémas d'URL sont une capacité d'applications à ouvrir dans un état donné, décrite par l'URL et gérée en code par le développeur.

Supposons que vous ayez une application appelée "Cool App" et que vous ayez enregistré le schéma d'URL "coolapp". Et votre application a différents domaines comme "Nice gadgets" et "Nice stuff". Vous pouvez maintenant ouvrir votre application avec le lien lien coolapp://Nice-gadgets. Pour ouvrir l'application sur la section Gadget Nice, vous devez implémenter la méthode application(_:openURL:options:) , et à l'intérieur de celle-ci, découvrez l'url demandée et faites que l'application ouvre le contrôleur de vue demandé.

En même temps, vous avez un site Web appelé www.coolapp.com. Lorsque vous naviguez à l'aide d'un appareil iOS et que vous rencontrez un lien vers votre site - dites www.coolapp.com/Nice-gadgets, Et en ouvrant le lien, il s'ouvrira dans le navigateur. En activant les liens universels, il ouvrira l'application à la place en appelant la méthode application(_:continueUserActivity:restorationHandler:) avec l'url comme paramètre. De là, vous pouvez utiliser la même logique de la gestion du schéma d'URL, pour ouvrir l'application dans l'état demandé.

Les liens universels remplaceront-ils les schémas d'URL? J'en doute, mais ils vont se complimenter gentiment.

Les liens universels sont-ils des liens profonds? Non, mais ils peuvent lancer le processus d'utilisation de liens profonds dans une application.

42
micmdk

TL, DR:

Quelle est réellement la différence entre Universal Link et les schémas d'URL? Est-ce qu'un lien universel est uniquement destiné aux hyperliens des sites Web et aux applications de messagerie ou de messages?

Un lien universel est un Apple URL spécifique basée sur le système d'exploitation qui lie l'URL d'un site Web à un schéma et à une route URI spécifiques à l'application. Il n'est pas disponible dans toutes les applications - car l'application doit prendre en charge Il y a une bonne liste où/comment les UL fonctionnent actuellement ( ici ).

Il y a aussi des tonnes de problèmes avec les UL que je décris à la toute fin. Voir longue lecture ci-dessous.

Les liens universels remplacent-ils les schémas d'URL?

Non. Il s'agit d'un remplacement forcé des schémas URI et des itinéraires sur iOS Safari. Vous devez et devez toujours prendre en charge le schéma et les itinéraires URI de votre application depuis Android et iOS Chrome utilise toujours cette technologie, comme le font toutes les principales classes de fournisseurs de liens d'attribution). par e-mail.

Les liens universels sont-ils un type de lien profond?

Oui et non. Les liens universels en eux-mêmes ne sont pas des liens profonds universels - ils ne peuvent pas passer par le processus d'installation par exemple. Mais lorsque l'utilisateur dispose de l'application, il peut effectuer un lien profond. Mieux vaut penser à tous les liens en termes de ce qu'ils peuvent et ne peuvent pas faire, plutôt que de classer les URL en "liens profonds" et "pas de liens profonds".

De nombreux liens présentent le comportement de lien profond selon que l'utilisateur possède l'application et le contexte (navigateur, application, système d'exploitation, version du système d'exploitation, etc.). Modifiez le cadre de réflexion.

Suivi des liens universels

Tout au long du document ci-dessous, je décris tous les différents aspects des liens universels. Il est important de signaler que continueUserActivity signalera l'URL de référence à partir d'un lien universel, vous pouvez donc l'utiliser pour attribuer les ouvertures.

Parce qu'un UL n'est pas un lien normal, si vous avez des redirections, cela le cassera. De même, si vous désactivez les redirections, quel que soit le serveur de clics du site Web dont vous disposez, vous ne serez jamais touché. C'est pour une discussion différente, mais importante à noter.

Beaucoup d'informations utiles que j'ai organisées ci-dessous sur les liens universels si vous êtes intéressé.

Schémas d'URI

La plupart des gens connaissent les schémas d'URI. Un URI est un indicateur de ressource universel ( link ). Les URI peuvent être attribués à des applications mobiles. La saisie d'un URI, comme airbnb: //, tentera de localiser la ressource d'application Airbnb sur l'appareil.

Avant l'existence des liens universels ou des liens d'application (c'est-à-dire avant iOS 9.3/Android 6.0), il fallait utiliser un "schéma d'URI personnalisé" et l'itinéraire sous la forme de airbnb://d/listing/530250 pour associer en profondeur un utilisateur à un contenu spécifique dans une application mobile (dans ce cas, une liste). Cependant, cela n'était pas sécurisé et ne traitait pas le cas lorsqu'un utilisateur n'avait pas installé l'application (il n'y avait pas de solution de rechange). La façon dont la plupart des partenaires d'attribution (Appsflyer, Kochava, Button, Yozio, Branch, etc.) fonctionneraient est de fournir un lien qui les gère.

Lorsque l'utilisateur visite la page de cette URL, il y aura du javascript qui définirait une minuterie, puis essayer de lancer le schéma d'URI à partir du navigateur avec du javascript simple:

window.location.href(...)

Si l'application ne s'ouvre pas avant l'expiration du délai, le fournisseur peut supposer que le téléphone ne contient pas l'application, et à la place, certains javascript se déclenchent pour ouvrir iTunes ou Android URL à la place Ce mécanisme reposait sur le blocage de javascript dans le navigateur.

Dans iOS 9.3, Apple a supprimé le blocage de javascript dans Safari ( link ). Le résultat final est que chaque fois que vous essayez d'ouvrir une application avec un schéma d'URI dans Safari, vous verrait un gros message d'erreur qui disait: "Impossible d'ouvrir la page." Ce fut une expérience utilisateur terrible et a conduit à l'application du nouveau système d'Apple, Apple Universal Links.

Safari "Cannot Open Page" triggered by older style URI Scheme redirects. In iOS 8 and below all attribution and deeplinking tech worked by setting a timer, trying to launch the URI scheme & pathway, then if a timer expired before the app launched, redirecting the user to the App Store. The advent of iOS 9.3 killed non-blocking javascript, and hence there was no way for this method to work anymore. Chrome & Android still support this style of attribution and routing.

Liens universels Apple et Android sont essentiellement des URL Web (par exemple, https://www.airbnb.com/rooms/530250) qui visent à diriger les utilisateurs vers l'emplacement optimal sur le Web ou l'application. Ils étaient destinés à amener les utilisateurs sur le Web mobile si l'utilisateur ne dispose pas de l'application, mais s'ils le font, au contenu exact de l'application. Sur un appareil mobile, si l'utilisateur suit un lien universel et que notre application est installée, il peut être dirigé vers l'application, sinon le système se repliera et atterrira le visiteur sur notre site Web mobile (à quelques exceptions près - voir ci-dessous).

Pour qu'un lien soit vraiment universel, il faut que la fonctionnalité liée soit activée sur le Web, iOS et Android et que toutes les applications partagent le même chemin d'accès aux ressources.

Liens universels Apple et Android

Les liens universels Apple (iOS) et Android Les liens d'application (Android) sont essentiellement le même concept, mais sont souvent échangés ou confondus avec d'autres mécanismes de routage. Il est important d'être explicite lorsque vous en parlez. sinon vous risquez de confondre ou de confondre différentes technologies qui fonctionnent très différemment.

Plus précisément, Apple Les liens universels sont une norme de Apple qui est déployée sur le système d'exploitation iPhone (OS), qui permet à un utilisateur de toucher un lien et d'être livré immédiatement à l'application s'ils l'ont. Apple Les liens universels n'ont pas de redirections. Il s'agit d'une configuration système spéciale avec un certain degré de complexité technique. Lorsque l'utilisateur appuie sur le lien, un serveur aller-retour un appel est fait à Apple et le système d'exploitation ouvre l'application immédiatement sans jamais ouvrir le navigateur ni charger l'URL. Plus d'informations sur le fonctionnement ci-dessous.

Android App Links est le système de liaison équivalent configuré sur Android.

Universal Links commence par héberger un "Apple App Site Association File" (AASA) pour chacun de vos domaines.

Il est important de noter que presque toutes les entreprises AASA sont hébergées sur leur domaine principal, suivies de "/ Apple-app-site-association"

Quelques exemples:

https://www.jet.com/Apple-app-site-associationhttps://www.pinterest.com/Apple-app-site-association

Si vous cliquez sur ces URL, il télécharge l'AASA de l'entreprise. Un exemple AASA est sur le côté droit. Quelques éléments notables inclus dans un AASA: AppID pour toutes les applications où les liens universels peuvent être appliqués. Dans la nôtre et dans de nombreuses autres AASA, vous verrez la configuration pour les versions de production et de test de l'application afin que les liens fonctionnent sur toutes les versions pour les tests. L'AppID est structuré en tant que préfixe d'application, suivi de l'ID de l'ensemble. Habituellement, chaque version de test de l'application a un préfixe différent, mais l'ID de l'ensemble reste cohérent.

Exemple ... {App Prefix}. {Bundle ID}

Chemins: Ce sont les chemins qui ouvriront immédiatement l'application si l'utilisateur en dispose. L'application recevra l'URL de référence et pourra analyser le chemin approprié pour supprimer le lien entre l'utilisateur et le contenu par la suite.

La plupart des fournisseurs d'attribution, comme Branch ou Appsflyer, peuvent également héberger un AASA pour vous dans certains cas (exemple: l'AASA de Branch pour Airbnb est hébergé sur le domaine personnalisé https://abnb.me/Apple-app-site-) association ).

Ces fichiers mettent en liste blanche et liste noire les URL à mapper ou non à mapper dans l'application. Tout comme avec un AASA appartenant à l'entreprise, pour chaque domaine, le fournisseur spécifie les ID d'application et les chemins d'URL tels que:

5LL7P8E8RA.com.airbnb.app
"/rooms/*"
"/wishlists/*"
"/invite"
"NOT /rooms/*/building-rules"

Lorsque les utilisateurs installent ou mettent à niveau notre application, iOS récupère les fichiers AASA pour tous les domaines répertoriés dans les droits de notre application pour s'assurer que nos sites Web permettent à notre application d'ouvrir des URL en leur nom.

Problèmes connus avec les liens universels

Les liens universels fonctionnent très bien dans la plupart des cas, mais ceux-ci peuvent être facilement et, par inadvertance, désactivés! Si cela se produit, l'utilisateur sera toujours redirigé vers l'URL du site Web jusqu'à ce qu'il mette à niveau son application ou réinitialise ce que nous appelons son "fichier de droits" ( lien ).

Si un utilisateur appuie sur le lien "airbnb.com" ou "abnb.me" en haut à droite de notre application, le système d'exploitation dirigera l'utilisateur vers le site Web, mais il dirigera également en permanence tout futur Universal Link vers le mobile site Web pour les liens avec ce domaine!

Cela rompt efficacement la fonctionnalité de Apple Universal Links pour l'utilisateur. Ce n'est pas traçable en ce moment et la seule façon de réinitialiser est d'appuyer longuement sur l'URL et de cliquer sur "Ouvrir dans" Airbnb "" (pas intuitif) ou pour appuyer sur le bouton "Ouvrir" sur la Apple bannière de liens universels (bannière fantôme) décrite plus haut dans ce document.

Bannière Apple Universal Links

Ces chemins AASA sont également utilisés pour déterminer quand afficher ou non la "bannière de liens universels" du système iOS.

C'est un sujet particulièrement brûlant qui revient souvent dans les conversations et mérite d'être discuté.

Lorsque vous activez Apple Liens universels sur un domaine particulier, Apple injectera une bannière d'application système sur le navigateur Safari. Cela signifie qu'en plus des bannières ou interstitiels Web que nous affichons, Apple forcera également une bannière de liens universels non personnalisable et non traçable, qui s'affiche en haut de Safari pour les utilisateurs qui ont l'application et qui consultent une URL dans Safari qui est dans l'AASA.

Apple injects a "Universal Links Banner" on your website when you setup Universal Links. There is no attribution or tracking.

Nous n'avons aucun contrôle sur l'apparence de cette bannière. Nous pouvons seulement déterminer si elle doit être visible sur une page basée sur l'AASA. Nous n'avons actuellement aucun moyen d'identifier si ou quand un utilisateur appuie sur le bouton "OUVRIR" (IE pas d'attribution.

Résumé des attributs de la bannière Apple Universal Links:

  • S'affiche UNIQUEMENT si l'utilisateur possède l'application.
  • PAS le même que le Apple Smart App Banner
  • UNIQUEMENT affiché sur le navigateur iOS Safari.
  • Non personnalisable, sauf que vous pouvez personnaliser le texte du titre et de la description dans cette bannière avec le contenu The iTunesMetadata.plist ( link ).
  • Aucune attribution ni suivi.
38
ahay

Les liens universels remplacent les schémas URL/URI?

Dans le monde idéal d'Apple, OUI !


Les liens universels sont un type de liens profonds?

Parce que Apple forcer l'utilisateur développeur Universal Links afin de créer un lien profond. Donc, Universal Links est un type de lien profond par Apple. Mais si vous voyez que Facebook a duré le SDK, ils ont implémenté leur propre WebView afin de prendre en charge lien profond dans iOS 9.0 +. Donc, pour Apple Universal Links mieux que le lien profond.

13
Vineet Choudhary

Ceci est un exemple de lien universel: " http://sample-universal-link.demoapp.com "

Il est unique , et une fois tapé, il ouvrira l'application sans passer par Safari (si l'application est installé) ou ouvrira le site Web sur Safari (si l'application n'est pas installée)

Voici un exemple de schéma d'URL: "demoapp" (demoapp: // params)

Ce peut ne pas être unique , et après avoir été tapé , il ouvrira l'application si elle est installée . Si l'application n'est pas installée , elle ne fera rien . Une ou plusieurs applications peuvent avoir le même schéma d'URL.

L'implémentation ( exigences) pour Universal Link & URL Scheme est assez différente, donc je doute fortement que Universal links remplace URL Scheme.

Universal Link est l'un des moyens de mettre en œuvre un lien profond.

8
Arpit Dongre