带有 Mandrill 子域的通用深度链接

Posted

技术标签:

【中文标题】带有 Mandrill 子域的通用深度链接【英文标题】:Universal Deep Links with Mandrill sub domain 【发布时间】:2016-02-26 05:51:48 【问题描述】:

我的 ios 应用 Neighborly(与 neighbourly.co.nz 关联)有通用深层链接

我们向用户发送电子邮件并使用 Mandrill 跟踪点击次数。电子邮件链接转到指向 mandrillapp.com/path 的子域 clicks.neighbourly.co.nz/path 并且链接重定向到 neighbourly.co.nz/newpath

我已将 applinks:clicks.neighbourly.co.nz 添加到应用关联域。

我的 apple-app-site-association 文件的路径是通配符:["*"]

但是,虽然指向 neighbourly.co.nz 的链接可以正确启动应用程序,但指向 clicks.neighbourly.co.nz 的链接会在 Safari 中启动。我错过了什么?

我在网上找不到任何有关为深层链接设置子域的信息

我的 apple-app-site-association 文件是否需要托管在 mandrillapp.com 上?

【问题讨论】:

你有没有得到这个答案?我与山魈一起工作,它似乎破坏了我的通用链接 我相信 apple-app-site-association 文件需要托管在 mandrillapp.com。我直接给 Mandrill 发了电子邮件,但他们不让我暂时把它放在那里进行测试。他们表示他们可能会在未来调查这种情况,但目前要进行深度链接,我们必须停止使用 Mandrill。 我们宁愿在 Mandrill 上进行深度链接,所以将停止使用它们,只依赖 Google Analytics 酷,感谢更新! 【参考方案1】:

Mandrill 的跟踪也可能会干扰通用链接。

我通过为我的 branch.io 链接禁用 mandrill 跟踪来解决这个问题

mc:disable-tracking 是关键

在我的模板中:

<a href="http://mybranchsubdomomain.mydomain.com/something" mc:disable-tracking>Disabled Mandrill URL</a>

【讨论】:

【参考方案2】:

我们使用 Cloudflare 在 DNS(有点)级别解决了这个问题(无论如何我都建议使用这个很棒的服务)。

设置 Mandrill 以使用自定义域进行点击跟踪,并将 Cloudflare 作为 DNS 提供商。例如,在下面的屏幕截图中,它是在 Mandrill 和 Cloudflare 中设置的 track.yourdomain.com。

山魈跟踪域:

Cloudflare DNS:

然后在 Cloudflare 中使用他们的“页面规则”功能创建一个重定向到您在实际网站上托管的 apple-app-site-association 文件(假设它具有适用于两个域的规则,否则您可能会重定向到另一个文件,我没有测试这个)

Cloudflare 页面规则:

我还添加了一个缓存绕过规则,因为您希望对 track.yourdomain.com 的所有请求都到达您的源服务器,而不是被边缘服务器缓存。

【讨论】:

你好,所以如果我没弄错的话,会有一个指向 mandrill 域的 cname 和一个要重定向的页面规则。当有请求时,哪一个有效?请求会命中 mandrill 跟踪器并响应 apple-app-association 文件吗?最佳 对不起,但我只是把它 :) 除了苹果应用程序关联文件之外,所有 url 都会自动重定向到 mandrill。感谢您的解决方案:) 一个问题;如果安装了应用程序并假设关联文件与自定义跟踪域配合良好。 IOS 是否会将带有自定义跟踪子域的链接传递给应用程序而不在后台点击 url?如果不是这样,让 mandrill 仍然跟踪链接,您在收到链接时是否在应用程序中发出 curl 请求?如果您这样做了,您是否获得了原始链接或重定向结果链接?最佳【参考方案3】:

首先,您无需在 mandrillapp.com 上托管 apple-app-site-association 文件。

您需要将applinks:neighbourly.co.nz 添加到应用关联域的第二件事。

因为我刚刚检查过,如果我通过 URL https://clicks.neighbourly.co.nz/apple-app-site-association 向您的服务器请求 apple-app-site-association,那么您的服务器返回 404 文件未找到。

然后,我从 url https://www.neighbourly.co.nz/apple-app-site-association 找到并下载了您的 apple-app-site-association,并检查了 您使用的是旧格式。这是您当前的关联文件


  "applinks": 
    "apps": [],
    "details": 
      "2E23KCX8SU.nz.co.neighbourly.ios": 
        "paths":[ "*", "/" ]
      
    
  

用这种新格式替换旧的 apple-app-site-association 文件


  "applinks": 
    "apps": [],
    "details": [
      
        "appID": "2E23KCX8SU.nz.co.neighbourly.ios",
        "paths":[ "*", "/"  ]
      
    ]
  

更新apple-app-site-association文件后用Apple Validation Tool测试它


App Search API 验证工具结果

为 -> https://clicks.neighbourly.co.nz/apple-app-site-association


为 -> https://neighbourly.co.nz/apple-app-site-association

【讨论】:

clicks.neighbourly.co.nz/apple-app-site-association 不是我的服务器,它直接指向 mandrillapp.com,这就是那里没有 apple-app-site-association 文件的原因。 当 clicks.neighbourly.co.nz 不是我的服务器和我的 apple-app-site-association 文件时,我看不到 clicks.neighbourly.co.nz 的链接如何启动我的应用程序不能在那里托管 - 你能解释一下吗? 谢谢你的回答顺便说一句! json 文件无法托管在 mandrill,per mandrill:“iOS 深层链接不允许与 Mandrill 当前的点击跟踪机制集成。目前,我们无法在我们的域中托管任何自定义 JSON 文件,因此直接启动应用程序的任何行为都需要由您自己的域直接处理。不幸的是,这意味着我们的点击跟踪(通过重定向)系统不会报告此活动。

以上是关于带有 Mandrill 子域的通用深度链接的主要内容,如果未能解决你的问题,请参考以下文章

Mandrill 中的子域

Mandrill 能否将退回的邮件信息发送到发件人电子邮件

您可以将内联 base64 编码图像添加到 Mandrill 模板吗?

使用 ruby​​、Sinatra 和 Mandrill 如何从 api 调用访问单个元素并打印为 HTML?

无法将某些特定子域用于 firebase 动态链接

带有 Heroku 的 Rails 不发送 Mandrill 电子邮件