Android applink 踩坑指南
Android applink 踩坑指南
原理
与url scheme不同的地方在于协议必须是http或者https(但是经测试http无效),不能随便自定义协议头。
首先通过Android studio的工具帮助我们生成一个验证安装的app的信息的json文件(或者自己写也可以),里面主要包括app签名等可以用于验证身份的信息,放在https服务器上,首次安装app的时候会自动向服务器请求该json文件,验证目前安装的app是否正确未被第三方篡改。验证成功后会把app加入到链接处理政策列表中,当点击该链接时会自动选择使用app打开,不会弹选项框让用户选择是通过浏览器还是app打开该链接。
接入步骤
Android studio为我们提供了工具可以使applink的接入变得简单

总有4个步骤

将链接与activity关联起来

可以在pathvalues那里填需要从链接传过来的参数,url需要和你的https服务器url一致,不能像url scheme一样随便填。 activity就是你跳转过来之后要展示的页面。
其实就是帮我们在manifest.xml里面加了一个intent-filter:

加入meta data
在Androidmanifest.xml里的application里加入
<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements" />
然后在strings.xml里加入
<string name="asset_statements" translatable="false">
[{
"include": "https://你的服务器域名/.well-known/assetlinks.json"
}]
</string>
生成身份验证JSON

site domain要与上一个步骤里填的url一致,这个服务器是用来存放下面生成的JSON的。
选择一个签名文件,点击generate digital asset links file,生成用以验证身份的json,生成的JSON里最下面那一行就是签名文件的SHA。
官方这个步骤和描述很有误导性,其实不是把JSON文件放到服务器上,而是要以接口的形式返回JSON的内容,返回报文格式必须是application/json
点击下面的link and verify 可以验证是否能正确访问服务器的JSON
真机测试
经测试applink assistant的test app links 不好用,它只能以debug包进行测试,而且每次测试都失败。
打包一个release包(签名文件要与生成JSON用的一样),安装之后需要等待一段时间用以身份验证,Google官方说20s,经测试不止,华为需要几分钟,小米甚至需要十几分钟。验证成功后在手机本地(如备忘录)里点击url即可跳转到app,且不会弹框让用户选择使用浏览器还是app来打开这个链接。
可以这个命令来查看你的url是否加入到了链接处理策略列表里
adb shell dumpsys package domain-preferred-apps

这个status:always就是成功了,ask是没成功,需要询问。
结论
不好用,华为可以正常使用,本地点链接就直接打开app,但是小米6X不稳定,也是没有弹框,但是有时候打开了浏览器有时候打开了app。并且只能点本地链接(如备忘录、短信),在html里使用windo.herf.location = “链接” 来跳转,在浏览器里可以成功,微信里还是会被拦截
官方文档
[1]https://developer.android.com/studio/write/app-link-indexing.html
[2]https://developer.android.com/training/app-links/verify-site-associations#web-assoc
Android applink 踩坑指南的更多相关文章
- [置顶]
xamarin android toolbar(踩坑完全入门详解)
网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...
- Spring WebSocket踩坑指南
Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...
- Unity Android交互过坑指南
Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...
- 树莓派4B踩坑指南 - (15)搭建在线python IDE
今天想在树莓派上自己搭一个在线的python IDE,于是找到了一篇教程--Fred913大神的从头开始制作OJ-在线IDE的搭建 自己尝试动手做了一下, 还是发现不少细节需要注意, 记录在此 如果不 ...
- 正则表达式 test 踩坑指南
正则表达式 test 踩坑指南 test 只能使用一次,第二次返回的是错误结果! reg = /edg|edge/g; /edg|edge/g reg.test(`edg`) true reg.tes ...
- Taro 开发踩坑指南 (小程序,H5, RN)
Taro 开发踩坑指南 (小程序,H5, RN) css taro 如何展示多行文本省略号 https://www.cnblogs.com/xgqfrms/p/12569057.html UI 设计稿 ...
- 小程序 & taro 踩坑指南
小程序 & taro 踩坑指南 微信开发者工具, 不支持 react bug https://github.com/NervJS/taro/issues/5042 solution just ...
- Nuxt.js的踩坑指南(常见问题汇总)
本文会不定期更新在nuxt.js中遇到的问题进行汇总.转发请注明出处,尊重作者,谢谢! 强烈推荐作者文档版踩坑指南,点击跳转踩坑指南 在Nuxt的官方文档中,中文文档和英文文档都存在着不小的差异. 1 ...
随机推荐
- ASP.NET Core 中的模型绑定
微软官方文档:ASP.NET Core 中的模型绑定 Route 是通过MVC Route URL取值. 如:http://localhost:5000/Home/Index/2,id取出的值就会是2 ...
- Java斗地主(集合综合练习)
学完了集合后我们可以开始做一个简易版的 " 斗地主 " 了,但是呢咱们这个斗地主只能实现制造牌,洗牌.发牌.看牌这几个简单的功能,并不是我们玩的 " 真人版斗地主 & ...
- How to get the return value of the setTimeout inner function in js All In One
How to get the return value of the setTimeout inner function in js All In One 在 js 中如何获取 setTimeout ...
- Droplet——一款轻量的Golang应用层框架
Github地址 如标题所描述的,Droplet 是一个 轻量 的 中间层框架,何为中间层呢? 通常来说,我们的程序(注意这里我们仅仅讨论程序的范围,而非作为一个系统,因此这里不设计如 LB.Gate ...
- 关于引用JS和CSS文件刷新浏览器缓存问题,部署服务器后客户端样式不刷新
问题描述 对样式的css文件进行了修改,部署到服务器后访问发现页面展示不正常,但是刷新之后就会展示正常. 问题分析 研究之后发现可能的原因有 css文件过大,加载缓慢 本地缓存问题,虽然服务器修改了c ...
- 解决oracle18c没有hr用户
1.查找系统变量ORACLE_HOME的值 2.按照路径寻找sql文件 ORACLE_HOME变量值+demo\schema\human_resources 3.把hr_main.sql脚本文件放在此 ...
- Selenium4+Python3系列(五) - 多窗口处理之句柄切换
写在前面 感觉到很惭愧呀,因为居然在Selenium+Java系列中没有写过多窗口处理及句柄切换的文章,不过也无妨,不管什么语言,其思路是一样的,下面我们来演示,使用python语言来实现窗口句柄的切 ...
- ES6 学习笔记(十三)promise的简单使用
1.什么是promise 在JavaScript中,我们经常会用到回调函数,而回调函数的使用让我们没法使用return,throw等关键字.JS引用promise正好解决了这个问题. promise单 ...
- ARM TrustZone白皮书部分阅读
嵌入式系统安全的一些解决方法及缺陷 外部硬件安全模块:在主SoC之外包含一个专用的硬件安全模块或可信元件,e.g. 手机的SIM卡.隔离仅限于可以从非易失性存储器运行的相对静态程序 内部硬件安全模块: ...
- C#pictureBox滚轮缩放与拖拽
[转载]C#pictureBox滚轮缩放与拖拽 [转载]C#中图像平移.缩放的实现技巧 [转载]c# 通过鼠标拖动.放大图片,GDI绘图通过鼠标拖动.放大