作者:手机用户2502855763 | 来源:互联网 | 2023-08-18 20:06
开始之前,我们先介绍两个概念:深度链接(DeepLinking)和延迟深度链接(DeferredDeepLinking)。深度链接我们通过例子来说明这个问题,比如说我们使用淘
开始之前,我们先介绍两个概念:深度链接(Deep Linking)和延迟深度链接(Deferred Deep Linking)。
深度链接
我们通过例子来说明这个问题,比如说我们使用淘宝,看到一个宝贝很不错,这时候呢我们会将宝贝的信息分享到朋友圈或者分享给朋友,我们的朋友点击,在Android M系统之前呢一般会打开一个H5界面,界面中会有一个按钮(像“打开手机淘宝”),如果手机上有淘宝的话会打开手机淘宝,而深度链接呢,不但要打开手机淘宝,还要跳转到手机淘宝中该宝贝的展示界面。如果是Android M系统中,就不需要再打开一个H5界面而是可以点击链接直接打开手机淘宝,因为Android M引入了App Links功能。
延迟深度链接
在深度链接的基础上,并且手机上没有指定的App,需要下载、安装之后,在定位到App中特定的界面。
App Links
我们都知道从Android M(6.0)开始,Android系统实现了App Links功能:在系统中点击URL会定位到指定的App进行处理,而不是像以前一样打开浏览器。想了解App Links的具体实现可以参考下面这篇文章:
Android M App Links: 实现, 缺陷以及解决办法
为了实现App Links,需要我们做如下配置:
1、我们需要在AndroidManifest.xml进行配置,如下:
android:name="com.your.app.activity.ParseDeepLinkActivity"
...>
"true"
>
"http" android:host="yourdomain.com" />
"https" android:host="yourdomain.com" />
...
这里配置的意思是,如果在系统中点击“http[s]://youdomain.com”开头的URL,系统会打开该activity进行处理。前提是通过验证,验证什么呢,客观莫着急,我们下边会解释。android:autoVerify就是用来开启验证的,data是用来配置我们处理什么样的URL.
2、验证:当你请求成为某URL的默认处理App的时候,系统回去验证,URL所属的站点是否同意你来处理。系统会去站点的该地址https://yourdomain.com/.well-known/statements.json取一个文件,如果文件存在,并且通过验证的话,以后在系统中,你的App就会成为此URL的默认处理App。statements.json的格式为下:
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.mycompany.myapp",
"sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"]
}
}]
“package_name”填写你App的包名;”sha256_cert_fingerprints”你App签名文件的SHA256指纹.TIPS:现在Android验证的时候,只支持https协议
LinkedME
从上边的介绍大家应该都对App Links有了一定的了解,App Links具有一定的局限性:
(1)App Links只能在Android M以上使用;
(2)你得有自己的Web站点,并且Web站点支持Https协议
LinkME之类的服务可以帮助我们快速搭建深度链接,下边是个人分析的LinkME原理: