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

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

Scheme 的选择很重要:URL Scheme 唤醒

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

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

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

  1. 区别于其他应用:唯一性
  2. 区别于浏览器已经能处理的 scheme:特殊性

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

指向id=123456的新闻详情页:zljnews://news.zhoulujue.com/article/123456/
指向id=123457的新闻专题页:zljnews://news.zhoulujue.com/story/123457/
指向id=123456的新闻讨论页:zljnews://news.zhoulujue.com/article/123456/comments/

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

指向id=123456的新闻详情页:zljnews://zljnews/article/123456/
指向id=123457的新闻专题页:zljnews://zljnews/story/123457/
指向id=123456的新闻讨论页:zljnews://zljnews/article/123456/comments/

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

















App Links 与 Universal Links,来自官方的方式

我们假设一个用例:用户在印象笔记里写了一篇笔记,笔记里有一个链接: http://news.zhoulujue.com/article/123456/。 那么问题来了:用户点击以后,将会发生什么?

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

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值