Appy

深度链接

什么是 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 查看验证状态
adb shell pm get-app-links com.example.app
延伸阅读Android App Links 验证失败:用 adb 五分钟定位问题一份 adb 排查清单,快速找出 App Link 为什么在浏览器里打开。
  • 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,电脑端打开网站。没有广告,不用绑卡。