深度链接
什么是 Android App Links?
一句话解释
Android App Links(Android 应用链接)是经过域名验证的 https 链接,在 Android 6.0 及以上点击后直接打开 App,不弹“选择打开方式”。条件是 intent 过滤器设置 android:autoVerify="true",网站上放好写有包名和签名证书 SHA-256 指纹的 assetlinks.json。
验证怎么进行
App 安装后,Android 会到 intent 过滤器里声明的每个域名下请求 /.well-known/assetlinks.json,核对包名和 App 签名证书的指纹。对上了,这个域名的链接就在 App 里打开;对不上,就在浏览器里打开。从 Android 12 开始,未通过验证的链接不再弹出选择框,而是直接进浏览器。
最常见的错误
文件里只写了团队自己打包用的签名指纹,漏了 Play 应用签名(Play App Signing)密钥的指纹。从 Google Play 下载的 App 是用 Google 的密钥签名的,验证自然通不过。这个指纹在 Play Console 里能查到,补进 sha256_cert_fingerprints 即可。
怎么排查
执行 adb shell pm get-app-links 加包名,可以看到每个域名的验证状态,显示 verified 就说明没问题。状态不对时,先查文件的重定向、Content-Type、包名和指纹,改完用 adb shell pm verify-app-links --re-verify 重新触发验证。
adb shell pm get-app-links com.example.app相关术语
- assetlinks.json 文件
assetlinks.json 是放在域名 /.well-known/ 目录下的 Digital Asset Links 文件,告诉 Android 哪个 App 有权打开这个域名的链接。里面写明 handle_all_urls 关系、包名和签名证书的 SHA-256 指纹。没有它,App Links 通不过验证,链接只会在浏览器里打开。
- 通用链接(Universal Links)
通用链接(Universal Links)是 Apple 从 iOS 9 起支持的 https 链接:在 iPhone 和 iPad 上,装了 App 就直接打开 App,没装就打开网站。配置要两边配合:App 开启 Associated Domains,域名下放好 apple-app-site-association 文件。
- Intent URL
Intent URL 是 Android 上 Chrome 能识别的链接格式(intent://…#Intent;…;end)。装了 App 就直接打开;没装就跳到 S.browser_fallback_url 里的网址,没写这个参数则打开 App 在 Google Play 的页面。一条链接同时照顾装了和没装的用户。
一条链接,搞定 App Store、Google Play 和网站
Appy 免费版提供 4 条链接和对应的二维码:按设备自动跳转 App Store、Google Play、华为应用市场、三星 Galaxy Store 或小米 GetApps,电脑端打开网站。没有广告,不用绑卡。