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

时间:2017-03-13 19:18:02

标签: ios redirect mailchimp mandrill ios-universal-links

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

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

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

3 个答案:

答案 0 :(得分:12)

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

我们创建了一个应用程序,其功能是允许用户通过生成魔术访问链接来登录。用户将下载并安装该应用,输入他们的电子邮件地址,服务器会向他们发送一封电子邮件,其中包含以下形式的链接: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>

由于文件是通过重写提供的,因此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>

如果将meta设置为渲染服务器端而不是使用JS客户端,则meta可能会更好,但它仍然可以工作。

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

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

答案 1 :(得分:6)

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

要解决此问题,您需要在MailChimp上disable click tracking。但是,如果该应用不支持通用链接,它可能仍无法在每个应用(例如Gmail)中使用。

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

答案 2 :(得分:0)

不,这是不可能的。

使用相关链接的资源可以包含公共区域上的apple-app-site-association文件。邮件黑猩猩没有。

https://stackoverflow.com/a/31622856/4996248

  

添加对通用链接的支持很容易。你有三个步骤   需要采取:

     

创建一个包含JSON数据的apple-app-site-association文件   关于您的应用可以处理的网址。上传   apple-app-site-association文件到您的HTTPS Web服务器。您可以   将文件放在服务器的根目录或.well-已知   子目录。准备您的应用程序以处理通用链接。