web-dev-qa-db-fra.com

Liens universels avec des redirections ne fonctionnant pas dans iOS

Les liens de domaine d'entreprise se retrouvent dans l'application iOS. Les liens avec des redirections via MailChimp vers le site Web de la société à partir du site Web de courrier électronique aboutissent dans l'application iOS.

Mais les liens qui redirigent vers le site Web du domaine de la société par le biais du lien de suivi MailChimp tapé dans une application de messagerie (Mail, Gmail, etc.) se retrouvent dans Safari sur le site Web de la société. 

Existe-t-il une solution permettant de faire en sorte que les liens de messagerie MailChimp avec redirection fonctionnent comme des liens universels et ouvrent l'application iOS?

5
Yevheniia Zelenska

J'ai en fait développé une solution de contournement pour cela.

Nous avons créé une application dont la fonction permettait à un utilisateur de se connecter en générant un lien d'accès magique. L'utilisateur téléchargerait et installerait l'application, entrerait son adresse email et le serveur lui enverrait un email contenant un lien sous la forme: https://www.example.com/app/accesslink/ {{tokenHere }}

Nous avons créé un fichier AASA et l'avons chargé sur notre domaine (www.exemple.com), par exemple :) https://developer.Apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

La plupart des utilisateurs peuvent générer un lien d'accès, le toucher et l'application se chargera. Nous avions des gestionnaires sur l'application pour prendre le jeton et les authentifier, etc.

Le problème est survenu lorsque certains fournisseurs de courrier électronique ont réécrit le lien d'accès dans le courrier électronique. Cela est particulièrement arrivé aux entreprises qui ont installé des URLblockers.

Pour contourner ce problème, nous avons créé une règle de réécriture sur le serveur afin de réécrire www.example.com/app/accesslink/{{anythingHerer}} dans un fichier statique appelé "404accesslink.html" (le nom du fichier est arbetary, le serveur était asp.net IIS dans ce cas). Nous avons ensuite édité le fichier '404accesslink.html' comme suit pour inclure la méta suivante:

<script>
    document.writeln('<meta name="Apple-iTunes-app" content="app-id={{APP_ID_HERE}}, app-argument=' + document.location.href + '">');
</script>

Parce que le fichier a été servi lors d’une réécriture, la valeur location.href était une correspondance exacte pour le lien d’accès. Cela a trompé iOS en ouvrant l'application et en lui passant le chemin. Nous pourrions ensuite le récupérer dans le gestionnaire comme d'habitude et authentifier l'utilisateur.

Nous avons écrit quelques instructions simples au cas où l'ouverture de l'application n'était pas automatique et la page affichée (bien que cela ne se soit pas produit lors de nos tests).

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  <script>
    document.writeln('<meta name="Apple-iTunes-app" content="app-id=XXXXXXXXXX, app-argument=' + document.location.href + '">');
  </script>
  <style>
    body {
        padding-top: 5%;
        color: #FFF;
        font-size: 1em;
        font-family: Arial, Helvetica, sans-serif;
        text-align: left;
        background: #00338D;
        margin: 50px;
    }
    h1 {
        font-weight: normal;
        font-size: 1.8em;
    }
    a {
        color: #FFF;
        font-weight: bold;
        text-decoration: none;
    }
  </style>
  <title>XXXXXXXXX</title>
  <body>
    <h1>Please select 'Open' in the app banner displayed at the top of this page to open the app with your access link.</h1>
    <p>If you do not see the app banner above then please close your browser and sign into the app using your email address and the password you used to register for the event.</p>
    <p>If you do not know your password then you can <a href="https://XXXXXXXXXXXXX/account/mobileforgot/">reset it by following this link</a>.</p>
    <p>Thank you,</p>
    <p>XXXXXXXXXXXXX team</p>
  </body>
</html>

La méta serait probablement mieux si elle était définie et restituée côté serveur plutôt que d'utiliser JS côté client, mais cela fonctionnait néanmoins.

Avant que cela soit fait: Si un système réécrit/encapsulait le lien de l'application, l'application n'était pas associée à la nouvelle URL et lorsque l'utilisateur tapait l'URL ouverte dans Safari.

Une fois cette opération terminée: Si un système réécrit/encapsulait le lien de l'application, l'application n'était pas associée à la nouvelle URL et lorsque l'utilisateur tapait l'URL qui était ouverte dans l'application.

10
Ben Edge

Les liens universels sont basés sur l'URL réelle du lien en cours d'ouverture. Cela signifie que si vous intégrez le lien dans une redirection (comme le fait MailChimp), les liens universels ne fonctionneront pas.

Pour contourner ce problème, vous devrez désactiver le suivi des clics sur MailChimp. Toutefois, il est possible que cela ne fonctionne toujours pas dans toutes les applications (Gmail, par exemple) si cette application ne prend pas en charge les liens universels.

Branch.io (divulgation complète: je fais partie de l’équipe de la branche) a travaillé avec certaines des plus grandes plates-formes de messagerie pour résoudre ce problème et activer les liens universels et le suivi des clics, mais jusqu'à présent, MailChimp ne été intéressé. N'hésitez pas à leur faire savoir que c'est quelque chose que vous aimeriez voir!

5
Alex Bauer

Non c'est impossible.

La ressource qui fonctionne avec les liens associés peut consister en un fichier association Apple-app-site-association sur une zone publique. courrier chimpanzé n'a pas.

https://developer.Apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

Ajouter un support pour les liens universels est facile. Doit suivre trois étapes:

Créez un fichier association Apple-app-site-association contenant les données JSON Relatives aux URL que votre application peut gérer. Téléchargez le fichier Apple-app-site-association-association sur votre serveur Web HTTPS. Vous pouvez Placer le fichier à la racine de votre serveur ou dans le sous-répertoire .well-known . Préparez votre application pour gérer les liens universels.

0
LLIAJLbHOu