聪少

聪少爱学堂 专注分享全网引流精准引流方法及自媒体运营干货

Android 上玩转 DeepLink:如何最大程度的向 App 引流

发布时间:2021-06-29 10:39:25 已收录 阅读:9次

转载请联系: 微信号: michaelzhoujay

原文请访问我的博客

如果你的产品向用户提供网页服务,像 Web 页面或者为移动设备设计的 Html5 页面,那么我猜你一定会鼓励用户将这些内容分享到其他平台,或者通过信息邮件分享。

一般来说产品经理会用各种机制来鼓励用户主动完成分享,有的产品会对完成分享的用户奖励,比如积分、优惠券等。

分享 的实质是基于用户关系的传播,让更多人接触到你的产品。

这些看到分享链接或者页面的人,如果产生一次点击,你需要尽一切可能把他转化成你的用户。提高点击链接的效果,也就提高了产品的 分享转化率。

所以本文主要解决的问题其实是如何在 Android 上尽可能提高分享转化率。

这是后续步骤的基础,没有这个基础,后面说道的很多事情没有办法完成。

URL路由指的是你的 App 里的产品页面都需要能用户 URL 跳转。Github 上有非常多非常优秀的URL 路由,像阿里巴巴技术团队的ARouter。

你只需要简单配置,加上注解,就可以很快的搭建自己的 URL 路由框架。

下面我们简单介绍一下基本原理。

举个例子,一个新闻 App 提供"新闻详情页"、"新闻专题页"、"新闻讨论页" 这个3个功能模块。

我们先假设我们要处理的 App 的包名为 , 所以这些功能模块的连接

看起来应该是这样:

再假设这些页面的类名分别为:

所以我们需要一个管理中心,完成两件事情:

将外界传递进来的 URL,分发给各个 Activity 来处理;

管理 URL 路径和 Activity 的对应关系。

为了统一入口,我们创建一个入口 Activity: ,它用来向系统声明 App 能打开哪些链接,同时接受外界传递过来的 URL。首先我们在 Manifest 里声明它:

上面的声明表示,RouterActivty 可以打开所有域名为news.zhoulujue.com 的 https/http链接。

这个 RouterActivty 在收到 http://news.zhoulujue.com/article/123456/ 后,需要负责将 /article/123456/ 解析出来,根据 对应关系 找到,唤起它并且把这个 id 作为参数传递给。

常见的 Router 框架通过在 Activity 的类名上添加注解来管理对应关系:

实际上它在处理这个注解的时候生成了一个建造者模式里的 builder,然后向 管理中心 注册,说自己(ArticleActivity)能处理的子域名。

上面简述原理的时候说道了 Manifest 的声明,我们只声明了 和 , 但是实际上很多 App 还会用特定 的方式来唤起App,例如在 iOS 早期没有 UniversalLink 的时候,大家这样来唤起。

像淘宝就会用 的 scheme,例如 ,当你在网页点击链接以后,页面会创建一个隐藏的 iframe,用它来打开自定义 scheme 的 URL,浏览器无法响应时向系统发送一个 Action 为 、Data 为 的 Intent,如果 App 已经按照上述章节改造,那么系统将唤起 RouterActivity、并将 Intent 传递过去。

所以问题就来了:如何选取一个 URL Scheme 使得浏览器无法响应,所以你的 scheme最好满足以下两个条件:

区别于其他应用:唯一性

区别于浏览器已经能处理的 scheme:特殊性

在我们上述假设的新闻 App 里,我们可以定义 scheme 为 ,那么在 URL Scheme发送的 URL 将会是这样:

为了避免某些应用会预处理 scheme 和 host,我们还需要将 URL Scheme 的 Host 也做相应

更改:

这样的我们的 Manifest 里 RouterActivity 的声明要改为:

我们假设一个用例:用户在印象笔记里写了一篇笔记,笔记里有一个链接:

那么问题来了:用户点击以后,将会发生什么?

答案是:很大的可能是系统弹出一个对话框,列出若干个 App,问你想用哪一个打开。

选择App列表

这样体验其实不够好,因为用户路径变长了,转化率 将下降。所以我们应该尽可能去掉这个

对话框,其实上述章节说到了一个方法:将

改为 ,原理是我们选取了看起来"唯一性"的 scheme,

但是如果用户没有安装你的 App,这个体验就相当糟糕了,用户在点击以后将没有任何反应。

此时就需要 AppLinks 和 UniversalLinks 了,一言以蔽之,就是域名持有者向系统证明自己

拥有 这个域名并且 App 属于自己,这样系统就会直接将 App 唤起

并把 intent 传递给 App。

如何配置 AppLinks 就不在赘述了,参考官方的教程。

Facebook 在2014年的F8开发者大会上公布了 AppLinks 协议,在Android 的 AppLinks之前(Google I/O 15),

也是一种可行的“链接跳转 App”的方式。

这里也不在赘述细节,可以参考 Facebook 官方的介绍来实现,也特别简单。Facebook AppLinks

Facebook Bolts On Android

上面说了很多在网页中唤醒 App 的方式,但是这些都是建立在我们可以改页面 JS 等代码的前提下,

如果页面由第三方提供,举个例子,由广告主提供,表现方式是广告主提供一个落地页放在你的 App 里,

推动第三方去按照你的要求去改动他们的代码,可能比较困难,但是如果只是修改一下跳转链接就可以达到

唤起 App 的效果,这样性价比就比较高了。这个时候就需要 chrome 推荐的 intent scheme 了:

如代码所示,scheme填写的是我们上面假设的 scheme:,保持一致。

package 填写 App 包名:,参考Chrome官方 Intent 编写规范

总所周知,微信是限制唤起 App 的行为的,坊间流传着各种微信唤起的 hack,但总是不知道什么时候就被封禁了,这里介绍

微信官方的 正规 搞法:微下载链接:

微信微下载

如上图,知乎就使用了微下载来向知乎的 App 导流,这种方式 Android iOS 都是通用的,具体实现方式参考腾讯微信官方的文档。

假设一个场景,用户访问 阅读新闻时,被推荐下载了 App,此时安装完毕后打开 App后,最好

的体验当然是帮用户打开他没有看完新闻,直接跳转到刚刚在网页版阅读的文章。

最佳实践是:在用户点击下载时,把当前页面的 URL 写到 APK 文件的 ZIP 文件头里,待用户下载安装完毕后,启动时去读取这个

URL,然后结合上面说到过的 Router,路由到新闻详情页。下面跟我来一步一步实现吧。

将下面的 Java 代码保存为 并用 javac 编译好。

然后使用下面的命令对 APK 写入 URL:

在 App 首次打开的时候读取 ZIP 文件头里你写入的 URL,读取代码如下:

接着只要将返回值交给 Router 去处理,从而将用户导向没有阅读完毕的新闻详情页。

上面的内容都是在讲如何尽可能地把用户导进 App 里来,从另外一个角度,为了提高用户转化率我们要降低用户的跳出率,也就是说尽量避免用户从我们的 App 里被带跑了。

很多情况下,如果我们运营一个 UGC 的社区,我们无法控制用户创建内容的时候会填写哪些 URL,当然作为一个开放的平台我们肯定希望用户能够更高地利用各种工具将他们所专注的任务完成。

但是如果平台出现了一些人不受限制的发广告,或者利用你的平台运营竞争对手的产品,这种方式对成长中的产品打击有可能将是毁灭性的。

最佳实践:在服务器维护一个白名单,这个白名单中被允许的域名将被允许唤醒,否则拦截。

而这个拦截最好的方式是在WebView里,因为大多数跳转代码都在 URL 指向的落地页里。所以我们需要这样定义的

为了尽可能获取正确的 Host,请注意在上面第7行代码里,使用的是

好了,App 里面利用链接跳来跳去的事情基本上就讲完了,希望对你有帮助。如果你还有什么建议,可以通过扫描下面的二维码联系我,或者在下面留言哦~

聪少爱学堂,专注分享全网精准引流方法及自媒体赚钱运营干货。

聪少私人微信:80110557,暗号:8

送见面礼:价值980元自媒体运营与抖音热门教程礼包一份。

或微信扫描下面二维码,马上添加

版权声明:本站原创文章,于2021-06-29 10:39:25,由 聪少 发表!

转载请注明:Android 上玩转 DeepLink:如何最大程度的向 App 引流 - 聪少爱学堂

评论区

表情

共4条评论

站内搜索

聪少简介

聪少爱学堂聪少
聪少爱学堂创始人,梅州市鹏鑫网络科技有限公司CEO,09年开始踏入互联网,10年互联网行业经验,资深自媒体人,自媒体优秀导师,咪挺微商团对营销引流顾问,业务包含:精准引流技术/代引流精准粉,专业小红书,知乎,微博代运营。