深度链接
什么是 assetlinks.json?
一句话解释
assetlinks.json 是放在域名 /.well-known/ 目录下的 Digital Asset Links 文件,告诉 Android 哪个 App 有权打开这个域名的链接。里面写明 handle_all_urls 关系、包名和签名证书的 SHA-256 指纹。没有它,App Links 通不过验证,链接只会在浏览器里打开。
文件内容
文件是一个数组,每条记录有值为 delegate_permission/common.handle_all_urls 的 relation,以及包含 namespace(android_app)、package_name 和 sha256_cert_fingerprints 的 target。指纹可以写多个,比如上传密钥和 Play 应用签名密钥各一个。
托管要求
只能走 HTTPS,不能重定向,Content-Type 要是 application/json。Android 会到 intent 过滤器里的每个主机分别请求这个文件,所以 example.com 和 www.example.com 要各自通过验证。文件被登录或防爬策略挡住,验证同样会失败。
最容易出错的地方
漏掉 Play 应用签名密钥的指纹:从 Google Play 安装的 App 用的是这个密钥,而不是开发者自己的。另一个常见问题是裸域名和 www 之间的重定向,浏览器能正常打开文件,Android 却判为失败。改完之后,可以在手机上用 adb shell pm get-app-links 查看状态。
https://example.com/.well-known/assetlinks.json相关术语
- Android 应用链接(App Links)
Android App Links(Android 应用链接)是经过域名验证的 https 链接,在 Android 6.0 及以上点击后直接打开 App,不弹“选择打开方式”。条件是 intent 过滤器设置 android:autoVerify="true",网站上放好写有包名和签名证书 SHA-256 指纹的 assetlinks.json。
- apple-app-site-association(AASA)文件
apple-app-site-association(AASA)是放在域名 /.well-known/ 目录下的 JSON 文件,用来证明这个域名和你的 App 是关联的。文件里列出 App ID(Team ID 加 bundle ID)和要在 App 里打开的路径。没有它,通用链接不会生效,只会打开网站。
一条链接,搞定 App Store、Google Play 和网站
Appy 免费版提供 4 条链接和对应的二维码:按设备自动跳转 App Store、Google Play、华为应用市场、三星 Galaxy Store 或小米 GetApps,电脑端打开网站。没有广告,不用绑卡。