【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析

原文在这里

需求背景

设想一下你做了一个新闻类 App,一个用户在其他应用中被你的某一个条推广广告所吸引,在安装了你的 App 的情况下,如果他点击了一下广告,直接就跳转到你的 App 广告上新闻的详情界面,用户会不会觉得这就是他想看到的呢?或者如果他没有安装你的应用,被引导安装后,第一次打开应用也同样跳转到那一条新闻的详情界面,用户会不会觉得很开心呢?

了解用户的关注点,满足用户的需求,是每一个 App 开发者都应该关注的。笔者结合具体的正在开发的项目,调研了一些技术方案,最终采用了以下两种方式相结合的方案:

  • Google Referrer
  • Deep Links

本文分别对这两种方式进行分析总结。

Google Referrer

当从外部链接跳转到 Google Play Store 时,可以使用 Google Install Referrer 来 100% 的精确归因,Google Analytics 也是使用 Install Referrer 来进行归因统计的。(引自 Google Referrer 的介绍)

既然 Google 自己的应用安装统计都是采用的 Google Referrer 的方式,并且号称 100% 精确,我们有理由认为统计从哪里跳转到 Google Play Store 的,采用 Google Referrer 的方式是可行的。那我们应该怎么去做并且他的实现原理是什么呢?

具体的做法是:

  1. 既然需要确定需要是从哪里跳转到 Google Play Store 的,则需要设置跳转到 Google Play Store 的链接格式为:

https://play.google.com/store/apps/details?id=com.android.chrome&referrer=tracking_id%3D123456789&utm_source%3Dweb_site%26utm_medium%3Dcpc%26utm_term%3Dchrome%26utm_content%3Dlogolink%26utm_campaign%3Dsafe%26anid%3Dadmob

  1. 在自己的应用中添加 Receiver,接收 Google Play Store 发送给应用的参数。


    【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析_第1张图片

应用通过 Google Play Store 安装应用后,这个 Receiver 在应用第一次启动时,接收 Google Play Store 发过来的 referrer 参数。这些参数的具体含义是:

【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析_第2张图片

还有一个参数是 tracking_id 可以设置追踪 ID,如果应用正在投放广告,或者是有一些 Landing Page 统计时,这个 ID 可以将这些信息关联起来,进行横向对比分析,


【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析_第3张图片

根据这些信息就可以进行不同的操作了,比如获取到的 source 是 web_site,则表明其是通过网站跳转过来的。这些数据的统计,需要各方面的配合,一起保证各处设置的链接都是正确的。这里需要注意的是这个 Receiver 接收的 action 比较特别,是“com.android.vending.INSTALL_REFERRER”,而这个 Action 的发送方式被 Google Play Store 进行了特殊的处理,如果有多个 Receiver 需要处理,需要在第一个 Receiver 中去特殊调用其他的 Receiver。具体原因和做法参考这里:https://goo.gl/e5taJX 的解释,测试 INSTALL_REFERRER 可以使用这里:https://goo.gl/gzd35d 的工具。

好了,到现在为止,如果用户在跳转到 Google Play Store 时,携带了一些参数,我们可以将其解析出来并进行相应的处理,例如跳转到用户感兴趣的二级界面。但是这还不够,如果期望的是用户在安装应用后,在其他应用或网站点击某些内容时,直接应用的打开二级界面直接的去满足用户的需求,或者某些平台在某些场景下不支持 Referrer 怎么办?答案是采用 Deeplink 及其相关技术。

Deep Links

什么是 Deep Links 呢?

Users following links on devices have one goal in mind: to get to the content they want to see. (引自 Google)

究竟是什么意思,直接点来说就是用户可以在一个 App 中直接打开其它 App 的二级界面,这样的用户体验是很棒的!

实现方法也不复杂:

首先需要在清单文件中添加意图过滤器(Intent filter)

【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析_第4张图片

这里除了 不同外,intent-filter 是相同的,在实际情况中,他们会合并成在一起:


并且有趣的是其实他们不止可以直接打开 http://www.example.com/gizmosapp://open.my.app 外,还可以直接打开 http://open.my.appapp://www.example.com/gizmos,这也是 Google 开发人员的一点幽默吧。
你以为这就完了吗?当然不是,这样的文章网上太多了,SEAL 不会那么没有新意。接下来要说的是 App Links,App Links 是 Deep Links 的升级版。

As a developer, you can set up Android App Links to take users to a link’s specific content directly in your app, bypassing the app-selection dialog, also known as the disambiguation dialog. Because Android App Links leverage HTTP URLs and association with a website, users who don’t have your app installed go directly to content on your site.(引自 Google)

简单点来说就是同样的做法,可是采用 Deep Links 时,如果是 http://www.example.com 这种形式的链接,用户需要手动去选择用浏览器还是你的应用去打开,其他应用可能因为某些应用流行度比较高,去设置一些其他应用采用的域名或前缀,拦截一些其他应用的用户,这不太合适吧。并且如果已经安装了应用,用户点击后更多的情况是希望用户用 App 打开,否则只去浏览网页,这似乎不太符合预期,因此在 Android API 23(Android 6.0)以上的手机,用户被设置为应用打开优先级更高,用户减少了一步选择浏览器的操作,用户可以去设置中更改默认设置。同样开发者可以申请域名所有权验证,如果验证通过了,其他应用就不可使用你的域名了,一定程度上减少了侵权的可能性。同时 App Links 支持 “Instant App”,就是那种类似于小程序一样的 App,不需要安装,用完即走。虽然 “Instant App” 使用场景似乎并没有那么多,可了解这个技术不是什么坏事,说不定哪天就火起来了,这里暂时先不赘述了。

回归正题,这里介绍完了 Deep Links,那除了直接打开二级界面外,还有哪些用处呢?做推广!这里只举一个例子吧:Facebook 的推广、广告等不支持设置 Referrer,投放带来了流量,但是用户具体是被什么吸引过来的根本不知道,无法统计,也无法根据用户的喜好推广或跳转用户最感兴趣的界面,这怎么可以忍?Facebook 支持 Deep Links,投放在投放广告时,可以设置 Deep Links,并且可以提供了方法去获取,这就可以达到和 Referrer 类似的目的,了解用户喜欢的喜好,对优化产品还是很有帮助的。

由于 Facebook 在国内有一定限制,百度、豌豆荚等也开始支持这些技术了,并且搜索引擎也对 Deep Links 进行了一定的优化,在点击后也可以跳转到应用的具体界面,如果感兴趣,这些内容请自行搜索。

这里再介绍一个最佳实践:

因为 Deep Links 是直接将用户引导到二级界面,没有前因后果,而没有前因会造成一些参数数据不完整,会引起程序挂掉,大量的逻辑判断,又会一定程度上影响代码质量。因此,如果应用内 Deep Links 使用比较多的话,将所有或其中一部分 Deep Links 引导到同一个 Activity 中,将这个 Activity 作为路由,负责跳转或保证数据安全,将逻辑判断简化,局限在小范围内,对代码解耦或维护来说,都可能是一个不错的选择。

第三方解决方案

除了上面介绍的技术方案外,还可以接入第三方服务提供商,他们帮你做好 Landing Page,你只需后台去看统计,这样实现成本比较低,也是个不错的选择,不过可能需要支付一些费用,统计的准确程度需要更多的数据去验证,我调研了一些,不过由于种种原因没有采用,这里不再赘述这一部分内容了。

总结一下:

  1. Referrer 是 Google 推荐的,也是很多统计平台采用的统计方式,实现简单,但是有局限性,在应用已经安装的情况下,需要使用 Deep Links,在无法设置 Referrer 的情况(某些推广平台不支持)下不适用。
  2. Deep Links 或 App Links 是用于优化用户体验的一种方式,也同样可以用来做统计使用,但没有 Referrer 那样直接,网页跳转 Google Play Store 设置 Deep Links 也是有一定困难的。
  3. 两种方式都各有优缺点,结合起来使用,效果更佳。

注:本文部分图片来自网络。

知其然,更要知其所以然,SealDEV 倾情出品。


【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析_第5张图片

你可能感兴趣的:(【SealDEV 倾情奉献】Referrer 和 DeepLinks 的对比分析)