深入了解移动应用深度链接
Zhiyi Huang, Backend Developer, Adjust, 2020年2月21日.
通过移动应用深度链接技术,用户在点击网页或某一应用中的 URL 时,另一款应用就会启动并展示特定的页面。深度链接能够高效优化用户体验,提高转化率。了解了这一点,我们来看看如何创建深度链接,并了解深度链接相关的其他实用信息。
为何需要深度链接?
假设您发布了一款音乐应用,为庆祝新曲目的发行,花重金在一家热门网站上开展了推广活动。您节选了歌曲片段,在推广活动中播放,但希望用户能在应用中聆听片段,而不是在只显示专辑封面的网站上。
再举个例子:您希望通过促销推广活动重新激活非活跃用户。在推广活动中,用户只需点击一下即可跳转到促销产品页面,无需搜索产品,也不必手动输入优惠券代码。上述两例推广活动实现的关键就是深度链接。
移动应用深度链接能提供无缝用户体验,显著提高转化率和留存率。如需进一步了解相关内容,请查看这篇博文,其中讨论了深度链接在推广活动中的效果。
深度链接为何存在?
我们在上文已经提到,深度链接能让用户在网页和应用之间的旅程更流畅,也能为广告主显著提升用户转化几率。
例如,假设您想开展圣诞礼物推广活动,为自己的电商应用吸引购物者。在推广活动中,您将 "圣诞礼物" 单独设为一个类别,提供商品预览,但希望购物者在应用中查看商品,而不是在网页上。这时深度链接就会发挥作用。如果用户已经安装了应用,点击链接时应用就会打开,(在某些情况下) 立刻展示产品。
用户留存是深度链接的一个关键重点。利用深度链接,应用可以牢牢把握住用户。此外,深度链接也是实现用户再相互的高效工具,常常在营销推广活动中扮演关键角色。归根结底,深度链接是一种灵活的方法,能够将用户转至品牌生态中的不同位置,打造更好的用户体验,从而提高销售量、转化率和留存率。
深度链接的两种类型
深度链接分两种:默认深度链接和延迟深度链接。
默认深度链接
只有在用户已经安装应用的情况下,默认深度链接才会将用户转至应用;若应用未安装,链接将无法跳转到应用终端,继而会显示错误信息。
如果应用营销人员只想通过再营销推广活动找到已经安装应用的用户,并吸引这部分用户返回应用,那么就非常适合采用默认深度链接。
延迟深度链接
延迟深度链接比默认深度链接更加复杂。如果用户尚未安装应用,延迟深度链接就会将用户转至 App Store 或 Play 商店 (或其他位置,如包含更多信息的应用网站) 进行下载和安装,然后再打开用户最初的跳转界面。
例如,如果用户点击了鞋类产品广告,但此时尚未安装电商应用,那么就会被首先转到对应的应用商店进行下载和安装,打开应用时就会跳转到最初的目的产品界面。
只有采用 Adjust 等提供商的深度链接解决方案,才可能实现延迟深度链接。延迟深度链接的创建需要 SDK 集成。要了解更多相关信息,安卓请点击这里。iOS 请点击这里。
什么是上下文深度链接 (Contextual deep linking)?
您或许听说过 "上下文深度链接" 这个名字。上下文深度链接能够存储更多的信息,让营销人员借助自有内容达成更多目标,从而获得额外的优势。
上下文深度链接不是一种独立的链接种类,而是带有营销人员所添参数的默认或延迟深度链接。
如何创建深度链接
让我们先从基础入手:生成深度链接。由于深度链接必须在应用中安装,才能保证将用户转到预期位置,因此创建过程常常充满痛点,需要开发者和营销人员之间反复沟通。
此外,手动创建深度链接可能会耗费大量时间,也会增加人为错误的机率。与任何 URL 一样,如果出现输入错误,深度链接就无法正常运行。而即便是最好的工程师,偶尔打错字也不可避免。如果能采用一款高效的解决方案,自动创建深度链接,就能节省下宝贵的时间和资源,转而投入推广活动和策略的优化中。
归根结底,您需要一款易用的自动链接生成工具,提高可靠性,将人为错误降至最少。 Adjust 的深度链接生成器是一款优秀的工具,能为营销人员提供完整无误的深度链接 URL,App Link (安卓) 和通用链接 (iOS) 均适用,可极大地减少手动安装深度链接的麻烦。
基于 scheme 的深度链接 (针对安卓和 iOS) 和 iOS 9+ 通用链接 均有完整翔实的文档,两者的基础理念也很相似,即将 URL (基于 scheme:yourapp://;通用链接:https://yourdomain.com/)与您的应用相关联。如果用户已经安装应用,那么点击 URL 时,系统就会打开应用。
不过,这个世界并非事事完美。您可能也已产生疑问:尚未安装应用的人点击了深度链接 URL 会怎样?遗憾的是,点击者会看到错误信息,或不会收到任何响应。虽然从网页上无法直接检查设备是否安装了某个应用,您可以采取几种方法 "询问" 应用是否存在,如果不存在,则将用户转到 App Store、您的网站或任何其他位置。
之前我们已经说过,基于 scheme 的安卓和 iOS 应用深度链接以及 iOS 9+ 通用 Link 都有充分的文档。现在,我们来看几个例子,了解这些链接的运作方式。
安卓深度链接安装
首先,我们来举例说明安卓深度链接的设置。假设深度链接 URL 是 yourapp://path/,应用的 Bundle ID 是 com.yourapp.example。
JavaScript 解决方案
有一个较旧的常用方法可以解决该问题:使用 iframe 加载深度链接 URL,并用延迟 JavaScript 实现应用商店重定向:
这样,浏览器就会先尝试加载 yourapp://path/。
- 如果应用已经安装,那么就会被打开,接下来的 JavaScript 不会运行。
- 如果应用尚未安装,那么 yourapp://path/ 加载时不会有任何事发生。2 秒后,JavaScript 会将页面重定向至 Play 商店,让用户进行应用下载和安装。
不过,这种解决方案有一个问题:应用打开后,如果用户切换回浏览器,JavaScript 可能继续运行,再次将用户重定向至 Play 商店。对此,我们可以采用一种优化办法:检查用户切换回浏览器的时间,了解是否需要将用户重定向至应用商店:
Intent 解决方案
根据 Chrome 文档所述,安卓 Chrome 25 及更高版本不适用上文提到的解决方案。幸运的是,Google 提供了 Intent URL。这是一种更好的方法,用户点击 URL intent://path/#Intent;scheme=yourapp;package=com.yourapp.example;end 时,会发生下列两种情况:
- 如果应用已经安装,就会被 Chrome 打开。
- 如果应用尚未安装,Chrome 就会打开 Play 商店。
我该使用哪种深度链接解决方案?
Intent 解决方案安装更简单,用户体验更流畅,因此我们强烈推荐您采用这种方案。不过,Intent 解决方案需要浏览器支持。在碎片化的安卓世界中,许多旧的操作系统和浏览器尚未淘汰,不一定能提供 Intent 方法所需的支持。此外,大量应用采用的安卓 WebView 并不默认支持 Intent URL。请参考下列表格,了解每一种主流安卓浏览器对应的解决方案:
浏览器 | JavaScript | Intent |
---|---|---|
Chrome 24 或更低版本 | √ | |
Chrome 25 或更高版本 | √ | |
Firefox | √ | |
安卓浏览器 | √ | |
Facebook 应用内浏览器 | √ | |
Twitter 应用内浏览器 | √ | |
其他浏览器 | √ |
iOS 深度链接安装
假设您的深度链接 URL 是 yourapp://path/;应用商店中的应用 ID 是 12345678。
JavaScript 解决方案
与安卓类似,iOS 也可以使用如下 JavaScript 方法:
html <script>
window.location.replace("yourapp://path/");setTimeout(function () {
window.location.replace("https://itunes.apple.com/app/id12345678");}, 2000);
1。
- 如果应用已安装,那么首个重定向代码就会打开应用,接下来的脚本不会运行。
- 如果应用未安装,那么首个重定向代码就不会有任何行为,超时功能会将用户重定向至 App Store。
不过我们发现,该脚本在 iOS 8 及更早版本的 Safari 浏览器中效果良好,但在其他版本中不一定会奏效。请查看下方表格:
浏览器 | JavaScript |
---|---|
iOS 8 或更低版本 Safari | √ |
iOS Chrome | √ |
iOS 8 Facebook 应用内浏览器 | √* |
iOS 8 Twitter 应用内浏览器 | |
iOS 9 或更高版本 |
* 部分情况下有效,具体视 Facebook 应用版本而定
通用链接解决方案
自 iOS 9 起,Apple 发布了 通用链接。通用链接的运作方式与安卓的 Intent 类似,但需要更多的设置。此外,Apple 在 iOS 9.2 后进行了调整,弹窗变为了非模态,因此 JavaScript 解决方案也不再适用。
要启用通用链接,您需要拥有带 SSL 证书的域 (如 https://yourdomain.com/),且该域要关联到您的应用,并在 https://yourdomain.com/apple-app-site-association 下提供特殊的 JSON 文件,类似:
您的设备可通过该文件了解各个应用的深度链接路径。
然后打开 XCode,在 com.apple.developer.associated-domains 的 entitlement 文件中输入 applinks:yourdomain.com:
一个域可关联多个应用,反之亦然。
下一步,需要为 Handoff (即 application:continueUserActivity:restorationHandler:) 采用 UIApplicationDelegate 方法,以便应用接收链接并进行恰当的处理。
假设在 JSON 文件中设置了 "paths":[ "/dress/"],将 https://yourdomain.com/dress/ 关联到应用。当用户在 Safari 中点击 https://yourdomain.com/dress/1 时,
- 如果应用已经安装,就会打开,https://yourdomain.com/dress/1 会被传送至 UIApplicationDelegate。您可在 UIApplicationDelegate 对其进行处理,决定要打开哪个界面。
- 如果应用未安装,Safari 就会打开 https://yourdomain.com/dress/1,您依旧可以在网站上展示产品,也可以将用户重定向至 App Store
通用链接 听起来像是 iOS 的完美解决方案,不过这种方案其实也存在局限。
- 通用链接仅适用 Safari 和 Chrome
- 如果另一网站通过通用链接重定向,那么只有点击发生在 Safari 或 Chrome 中时,才会奏效。例如,如果电邮应用中的链接 https://anotherDomain.com/ 重定向到通用链接 https://yourDomain.com/dress/1,就不会深度链接至您的应用中。但是,如果 https://anotherDomain.com 的点击发生在 Safari 中,就会正常运行。
- 直接粘贴进地址栏的通用链接无法运行。
- 由 JavaScript 触发重定向时,通用链接无法运行。
- 在应用中用程序化方式 (例如通过 openUrl) 打开链接时无法运行
欢迎来到深度链接的世界!
移动应用深度链接颇为复杂,并没有放之四海皆准的解决办法。幸运的是,Adjust 可以检测关键场景,并使用最佳策略来实现深度链接功能。
我们还有更多的深度链接相关内容供您参阅。首先,请务必阅读我们的深度链接指南,深入了解其原理,了解 Adjust 的深度链接有何不同。我们还有多篇博文,例如 深度链接 差异的指南,以及深度链接优势概览。此外,还欢迎您参阅我们的文档,以及如何通过 Adjust 轻松安装通用链接。
如果您有任何疑问和想法,欢迎通过支持页面联系我们。
想要每月获取最新应用洞见吗?立即订阅我们的新闻简报!