转载请注明来源 http://www.cnblogs.com/hucn/p/5917924.html

活跃人数是衡量app一项关键指标, dau, mau, 有了流量才能给业务发展提供养分和空间.

app的流量一方面来自自身的留存, 一方面来自外部的供给, 而deeplink是外部引流的重要手段.

1 什么是deeplink

当有人分享一个商品给你, 发送一个链接到你的手机上, 你点击链接后直接跳转到app内对应的页面.

当你从浏览器中使用百度搜索, 点击一个搜索结果, 直接跳转到你的app的指定页面.

这些都是deeplink的使用场景, deeplink是从拦截外部请求到app内并定位到具体页面的技术.

2 为什么做deeplink

上面提到了流量的重要性, 而deeplink能够将外部流量引导到app内, 并提供连贯的浏览体验, 实在是引流的大杀器.

除此之外, deeplink还做高效的流量分发. 通过外部url的投放和内部拦截, 可以针对不同场景直接分发流量到具体页面, 将用户直接引导到各个垂直频道.

ios的appsearch和消息都在努力做, 培养用户, 虽然目前使用量不大, 但的确是比入口堆叠更有效的流量分发方式.

3 如何做deeplink

deeplink分两种, 一种是用户已经安装了你的应用, 直接做链接拦截和跳转. 另一种是用户没有安装, 需要下载安装, 安装完成后再跳转到具体页面(reserved deeplink). 这两种都有不同的方案和对应的难点.

已经安装app的应用, ios8以下可以使用URLSchema做url拦截. Android上applink可以解决跳转的问题. 而iOS9以上提供的universal link方案把体验做到了极致, 无需弹窗提示, 直接拦截跳转. 下面重点看看universal link如何做.

3.1 实现universal link

建议先看下官方文档

apple为了体验和安全, universal link流程略复杂. 如官方文档提到, 需要在要拦截的http链接根路径下(或者.well-known下)提供一个apple-app-site-association文件, 文件描述了对域名的拦截规则, 格式可以参照google的https://google.com/apple-app-site-association. 这里有几点需要特别注意!

  • aasa文件是精确到域名的, 也就是说www.google.com和map.google.com是两个aasa文件.
  • aasa不能有302, response header必须是200.
  • 必须是https.

接着需要在app的com.apple.developer.associated-domains文件中添加拦截的域名, 例如.

applinks:map.google.com

最后在UIApplicationDelegate中实现 application:continueUserActivity:restorationHandler: 方法, 完成跳转并且 return YES .参照API文档

3.2 调试universal link

如果你照着上面做universal link就生效了, 那么恭喜你, 可以略过这段.

universal link的缺点是—-链路太长, 不好调试. 笔者本着业界良心, 分享下之前解决universal link不生效的小技巧.

  • 1 使用真机调试. 官方说模拟器可以调试, 可有时事实却不是这样, 保险起见使用真机调试.
  • 2 使用抓包软件分析app安装. 每次删除重装app, 分析请求. app会在安装阶段请求aasa文件做校验. 因此如果没有发请求, 就是app entitlement写的有问题, 否则就是aasa文件问题.
  • 3 调试aasa请求. 注意几个点, 路径, 域名, https, 200. 官方说的mime-type和content-type, 亲测不需要. 还有一小技巧, 可以把请求代理到本地服务直接测试, 不需要发布到线上.
  • 4 使用iMessage测试. 用iMessage发送url做测试最靠谱, 其他app由于有可能定制了Safari, 会有各种诡异问题. 长按url, 看看是否有使用xxx打开选项, 因为有可能误关了universal link.

4 总结

相信完成了applink, 能够大幅提升app流量和产品体验. 下回看看如何用户没下载app时如何在安装完再跳转到具体页面.(reserved deeplink). 以及如何把这些技术串起来, 做到完美的体验.

User Growth Using Deeplink. (part1)的更多相关文章

  1. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  2. Linux平台 Oracle 11gR2 RAC安装Part1:准备工作

    一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二.安装前期准备工作 2.1 各节点系统时间校对 2.2 各节点关闭防火墙和 ...

  3. 表空间统计报告 Tablespace growth Report

    SQL> select TS# from v$tablespace where name='ABC' ; TS# ---------- 6 set serverout on set verify ...

  4. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

  5. FP - growth 发现频繁项集

    FP - growth是一种比Apriori更高效的发现频繁项集的方法.FP是frequent pattern的简称,即常在一块儿出现的元素项的集合的模型.通过将数据集存储在一个特定的FP树上,然后发 ...

  6. Deeplink做不出效果,那是你不会玩!

    最近魔Sir听一些有些同学说之前用过Deeplink,但效果并没有想象中的那么好,在了解了小伙伴的使用场景后,魔Sir觉得有必要出这么篇东西告诉大家,Deeplink效果差,那是因为你不会玩! 对于已 ...

  7. 薛非《品悟C-抛弃C程序设计中的谬误与恶习》读后感part1【转】

    薛非<品悟C-抛弃C程序设计中的谬误与恶习>读后感part1 作者:宝贝孙秀楠﹣大连程序员 发表于2012年10月5日由admin 出处:http://sunxiunan.com/?p=2 ...

  8. How to control PrincipalObjectAccess table growth in Microsoft Dynamics CRM 2011

    https://support.microsoft.com/en-us/kb/2664150 How to control PrincipalObjectAccess table growth in ...

  9. 小课堂Week12 Clean Code Part1

    小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...

随机推荐

  1. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  2. 如何优化coding

    如何优化coding 前言 最近一直在做修改bug工作,修改bug花费时间最多的不是如何解决问题而是怎样快速读懂代码.如果代码写的好的,不用debug就可以一眼看出来哪里出了问题.实际上,我都要deb ...

  3. Tableau未必最佳,国内BI也能突破重围!

    如今,百度一下商业智能或BI工具,总能看到Tableau的身影.并不是Tableau的营销做得好,而是国内对于商业智能工具的认知和选择似乎都落在了Tableau身上.导致不管业内业外都对商业智能的概念 ...

  4. Block解析(iOS)

    1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方 ...

  5. 使用HEXO快速建站

    先安好npm,请参照:http://max.cszi.com/archives/482 打开网站:https://hexo.io/   npm install hexo-cli -g hexo ini ...

  6. ASP.NET 5 和Entity Framework 7公告仓库

    ASP.NET 5 有一个公告仓库来介绍ASP.NET 5和 Entity Framework 7的主要变更说明,这个对于日夜更新的项目来说,很多人经常会遇到问题但是不知道去哪里寻找帮助,很多同学在做 ...

  7. 分布式服务注册和发现consul 简要介绍

    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架 ...

  8. Vue.js——60分钟快速入门

    Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们 ...

  9. AngularJS 第四天----控制器

    控制器的作用 今天和大家学习AngularJS中控制器方面的知识,本文会给出一些例子来说明如何使用AngularJS的控制器.在开始我们的例子之前,首先说说AngularJS控制器的作用.简单的来说A ...

  10. FreeBinary 格式说明

    说明 简称FB格式,是一个简单的二进制文件打包格式. 作用是FBX.unity.js等交换的一个中间格式. 由李剑英制定,易于读取,易于扩展 相应的代码可以用svn取得 SVN:http://code ...