具有重定向功能的通用链接无法在iOS中运行

Yev*_*ska 6 redirect mailchimp ios mandrill ios-universal-links

公司域链接最终会出现在iOS应用中.从电子邮件网站通过MailChimp重定向到公司网站的链接最终会出现在iOS应用中.

但是通过邮件应用程序(邮件,Gmail等)中的MailChimp跟踪链接重定向到公司域网站的链接最终会出现在公司网站的Safari中.

是否有任何解决方法使MailChimp电子邮件链接与重定向工作作为通用链接并启动iOS应用程序?

小智 13

我实际上为此开发了一种解决方法.

我们创建了一个应用程序,其功能是允许用户通过生成魔术访问链接来登录.用户将下载并安装该应用程序,输入他们的电子邮件地址,服务器将向他们发送包含以下形式的链接的电子邮件:https://www.example.com/app/accesslink/ {{tokenHere}}

我们创建了一个AASA文件并将其上传到我们的域名(www.example.com),例如:) https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

大多数用户可以生成一个访问链接,点击它,应用程序将加载.我们在应用程序上有处理程序来获取令牌并对其进行身份验证等.

当一些电子邮件提供商重写了电子邮件中的访问链接时出现问题.这尤其发生在安装了URLblocker的企业用户身上.

为了解决这个问题,我们在服务器上创建了一个重写规则,将www.example.com/app/accesslink/{{anythingHerer}}重写为服务器上名为'404accesslink.html'的静态文件(文件名是arbetary,服务器在这种情况下是asp.net IIS).然后我们按如下方式编辑'404accesslink.html'以包含以下元数据:

<script>
    document.writeln('<meta name="apple-itunes-app" content="app-id={{APP_ID_HERE}}, app-argument=' + document.location.href + '">');
</script>
Run Code Online (Sandbox Code Playgroud)

由于文件是通过重写提供的,因此location.href值与访问链接完全匹配.这诱骗iOS打开应用程序并将路径传递给它.然后我们可以正常地在处理程序中拾取它并验证用户身份.

我们写了一些简单的说明,以防打开应用程序不是自动的并且显示页面(虽然在我们的测试中这没有发生).

<!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>
Run Code Online (Sandbox Code Playgroud)

如果它被设置并呈现服务器端而不是使用JS客户端,则meta可能会更好,但它仍然有效.

在此之前: 如果任何系统重写/包装应用程序链接,则应用程序与新URL无关,当用户点击URL时,它在Safari中打开.

完成此操作后: 如果任何系统重写/包装应用程序链接,则应用程序未与新URL关联,并且当用户点击URL时,它在应用程序中打开.


Ale*_*uer 6

Universal Links基于正在打开的链接的实际URL.这意味着如果您将链接包装在重定向中(如MailChimp所做),Universal Links将无法运行.

要解决此问题,您需要在MailChimp上禁用点击跟踪.但是,如果该应用不支持通用链接,它可能仍然无法在每个应用(例如Gmail)中使用.

Branch.io(完全披露:我在分支团队)一直在与一些较大的电子邮件平台合作解决这个问题并启用通用链接和点击跟踪,但直到此时MailChimp一直没有兴趣.随意让他们知道这是你想看到的东西!